Chuẩn bị xoá AppCache

Chrome 85 sẽ xoá tính năng hỗ trợ AppCache theo mặc định. Hầu hết nhà phát triển nên di chuyển khỏi AppCache ngay lập tức và không nên chờ đợi thêm nữa.

Nối tiếp các thông báo trước, chúng tôi sẽ ngừng hỗ trợ AppCache khỏi Chrome và các trình duyệt khác dựa trên Chromium. Nhà phát triển nên chuyển sang sử dụng AppCache ngay lập tức thay vì chờ đợi thêm.

Service worker, được hỗ trợ rộng rãi trong các trình duyệt hiện tại, cung cấp một giải pháp thay thế cho việc cung cấp trải nghiệm ngoại tuyến mà AppCache đã cung cấp. Hãy xem phần Chiến lược di chuyển.

Dòng thời gian

Các thay đổi gần đây đối với lịch phát hành của Chrome có nghĩa là thời gian thực hiện một số bước này có thể khác nhau. Chúng tôi sẽ cố gắng cập nhật tiến trình này, nhưng tại thời điểm này, vui lòng di chuyển khỏi AppCache càng sớm càng tốt thay vì chờ các mốc cụ thể.

Tính năng "không dùng nữa" vẫn tồn tại nhưng nhật ký các thông báo cảnh báo không cho phép sử dụng. Tính năng "đã xoá" không còn tồn tại trong trình duyệt.

Ngừng sử dụng trong bối cảnh không an toàn Chrome 50 (Tháng 4 năm 2016)
Loại bỏ khỏi ngữ cảnh không an toàn Chrome 70 (tháng 10 năm 2018)
Ngừng sử dụng trong bối cảnh bảo mật Chrome 79 (Tháng 12 năm 2019)
Giới hạn phạm vi AppCache Chrome 80 (Tháng 2 năm 2020)
Bắt đầu thử nghiệm "Đảo ngược" nguồn gốc Chrome 84 (Tháng 7 năm 2020)
Xoá khỏi ngữ cảnh bảo mật, ngoại trừ những người đã chọn tham gia bản dùng thử theo nguyên gốc Chrome 85 (Tháng 8 năm 2020)
Xoá hoàn toàn khỏi các bối cảnh bảo mật cho mọi người sau khi hoàn tất bản dùng thử theo nguyên gốc Ngày 5 tháng 10 năm 2021 (khoảng Chrome 95)

Bản dùng thử theo nguyên gốc

Tiến trình này liệt kê hai mốc quan trọng sắp tới cần xoá. Kể từ Chrome 85, AppCache sẽ không còn hoạt động trong Chrome theo mặc định. Những nhà phát triển cần thêm thời gian để di chuyển khỏi AppCache có thể đăng ký tham gia thời gian dùng thử nguồn gốc "ngược" để kéo dài thời gian sử dụng AppCache cho ứng dụng web của họ. Bản dùng thử theo nguyên gốc sẽ bắt đầu từ Chrome 84 (trước khi Chrome 85 bị xoá mặc định) và sẽ hoạt động đến hết ngày 5 tháng 10 năm 2021 (khoảng Chrome 95). Khi đó, ứng dụng AppCache sẽ bị xoá hoàn toàn đối với mọi người, ngay cả những người đã đăng ký bản dùng thử theo nguyên gốc.

Cách tham gia thử nghiệm theo nguyên gốc "đảo ngược":

  1. Yêu cầu mã thông báo cho nguồn gốc của bạn.
  2. Thêm mã thông báo vào các trang HTML. Có 2 cách để làm điều đó:
    • Thêm thẻ origin-trial <meta> vào đầu mỗi trang. Ví dụ: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Ngoài ra, hãy định cấu hình máy chủ của bạn để trả về các phản hồi chứa tiêu đề HTTP Origin-Trial. Tiêu đề phản hồi thu được sẽ có dạng như sau: Origin-Trial: TOKEN_GOES_HERE
  3. Thêm mã thông báo tương tự vào tệp kê khai AppCache. Thực hiện việc này thông qua một trường mới trong tệp kê khai, với định dạng:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(Cần có một dòng mới giữa ORIGIN-TRIAL và mã thông báo của bạn.)

Bạn có thể thấy một dự án mẫu được nhúng bên dưới minh hoạ cách thêm mã thông báo dùng thử gốc chính xác vào cả tệp index.htmlmanifest.appcache.

Vì sao cần có mã thông báo ở nhiều nơi?

Bạn cần liên kết cùng một mã thông báo dùng thử theo nguyên gốc với:

  • Tất cả các trang HTML sử dụng AppCache.
  • Tất cả tệp kê khai AppCache thông qua trường tệp kê khai ORIGIN-TRIAL.

Nếu từng tham gia thử nghiệm theo nguyên gốc, có thể bạn chỉ thêm mã thông báo vào các trang HTML. Bản dùng thử nguồn gốc "ngược" của AppCache rất đặc biệt vì bạn cũng cần liên kết một mã thông báo với từng tệp kê khai AppCache.

Việc thêm mã thông báo thử nghiệm gốc vào các trang HTML sẽ bật giao diện window.applicationCache trong ứng dụng web. Các trang không liên kết với mã thông báo sẽ không thể sử dụng các phương thức và sự kiện window.applicationCache. Các trang không có mã thông báo cũng sẽ không thể tải tài nguyên từ AppCache. Kể từ Chrome 85, các ứng dụng này sẽ hoạt động như thể AppCache không tồn tại.

Việc thêm mã thông báo dùng thử theo nguyên gốc vào tệp kê khai AppCache sẽ cho biết rằng mỗi tệp kê khai vẫn hợp lệ. Kể từ Chrome 85, mọi tệp kê khai không có trường ORIGIN-TRIAL sẽ được coi là không đúng định dạng và các quy tắc trong tệp kê khai sẽ bị bỏ qua.

Thời gian và hậu cần triển khai bản dùng thử theo nguyên gốc

Mặc dù thử nghiệm gốc "ngược" chính thức bắt đầu với Chrome 84, nhưng bạn có thể đăng ký thử nghiệm gốc ngay hôm nay và thêm mã thông báo vào tệp kê khai HTML và AppCache. Khi đối tượng của ứng dụng web dần nâng cấp lên Chrome 84, mọi mã thông báo mà bạn đã thêm sẽ có hiệu lực.

Sau khi bạn thêm mã thông báo vào tệp kê khai AppCache, hãy truy cập vào about://appcache-internals để xác nhận rằng phiên bản Chrome cục bộ (phiên bản 84 trở lên) đã liên kết đúng cách mã thông báo dùng thử gốc với các mục lưu vào bộ nhớ đệm của tệp kê khai. Nếu bản dùng thử theo nguyên gốc của bạn được chấp nhận, bạn sẽ thấy một trường có Token Expires: Tue Apr 06 2021... trên trang đó, liên kết với tệp kê khai của bạn:

Giao diện about://appcache-internals hiển thị một mã thông báo được nhận dạng.

Kiểm thử trước khi gỡ bỏ

Bạn nên di chuyển khỏi AppCache sớm nhất có thể. Nếu bạn muốn kiểm thử việc xoá AppCache trên ứng dụng web, hãy sử dụng cờ about://flags/#app-cache để mô phỏng việc xoá AppCache. Cờ này có từ Chrome 84.

Chiến lược di chuyển

Service worker, được hỗ trợ rộng rãi trong các trình duyệt hiện tại, cung cấp một giải pháp thay thế cho trải nghiệm ngoại tuyến do AppCache cung cấp.

Chúng tôi đã cung cấp một polyfill sử dụng một trình chạy dịch vụ để sao chép một số chức năng của AppCache, mặc dù thư viện này không sao chép toàn bộ giao diện AppCache. Cụ thể, API này không thay thế giao diện window.applicationCache hoặc các sự kiện AppCache có liên quan.

Đối với các trường hợp phức tạp hơn, các thư viện như Workbox cung cấp một cách dễ dàng để tạo trình chạy dịch vụ hiện đại cho ứng dụng web của bạn.

Trình chạy dịch vụ và AppCache loại trừ lẫn nhau

Trong khi triển khai chiến lược di chuyển, vui lòng lưu ý rằng Chrome sẽ tắt chức năng AppCache trên mọi trang được tải theo quyền kiểm soát của trình chạy dịch vụ. Nói cách khác, ngay khi triển khai một trình chạy dịch vụ kiểm soát một trang nhất định, bạn sẽ không thể sử dụng AppCache trên trang đó nữa.

Do đó, bạn không nên tìm cách di chuyển từng phần của trình chạy dịch vụ. Bạn sẽ mắc sai lầm nếu triển khai một worker dịch vụ chỉ chứa một số logic lưu vào bộ nhớ đệm. Bạn không thể quay lại AppCache để "lấp đầy khoảng trống".

Tương tự, nếu triển khai một worker dịch vụ trước khi xoá AppCache, rồi phát hiện ra rằng bạn cần quay lại cách triển khai AppCache trước đó, bạn cần đảm bảo rằng bạn huỷ đăng ký worker dịch vụ đó. Miễn là có một trình chạy dịch vụ đã đăng ký trong phạm vi của một trang nhất định, AppCache sẽ không được sử dụng.

Câu chuyện trên nhiều nền tảng

Bạn nên liên hệ với một nhà cung cấp trình duyệt cụ thể nếu muốn biết thêm thông tin về kế hoạch xoá AppCache của họ.

Firefox trên mọi nền tảng

Firefox không dùng nữa AppCache trong bản phát hành 44 (tháng 9 năm 2015) và đã xoá tính năng hỗ trợ cho AppCache trong các bản Beta và Nightly kể từ tháng 9 năm 2019.

Safari trên iOS và macOS

Safari ngừng sử dụng AppCache vào đầu năm 2018.

Chrome trên iOS

Chrome dành cho iOS là một trường hợp đặc biệt vì trình duyệt này sử dụng một công cụ trình duyệt khác với Chrome trên các nền tảng khác: WKWebView. Trình chạy dịch vụ hiện không được hỗ trợ trong các ứng dụng iOS sử dụng WKWebView, đồng thời thông báo về việc xoá AppCache của Chrome không đề cập đến khả năng sử dụng AppCache trên Chrome dành cho iOS. Vui lòng lưu ý điều này nếu bạn biết rằng ứng dụng web của mình có một lượng đối tượng Chrome dành cho iOS đáng kể.

Android WebView

Một số nhà phát triển ứng dụng Android sử dụng WebView của Chrome để hiển thị nội dung web và cũng có thể sử dụng AppCache. Tuy nhiên, bạn không thể bật bản dùng thử theo nguyên gốc cho WebView. Do đó, Chrome WebView sẽ hỗ trợ AppCache mà không cần dùng thử theo nguyên gốc cho đến khi quá trình xoá cuối cùng diễn ra, dự kiến trong Chrome 90.

Tìm hiểu thêm

Sau đây là một số tài nguyên dành cho nhà phát triển di chuyển từ AppCache sang worker dịch vụ.

Bài viết

Công cụ

Nhận trợ giúp

Nếu bạn gặp vấn đề khi sử dụng một công cụ cụ thể, hãy mở một vấn đề trong kho lưu trữ GitHub của công cụ đó.

Bạn có thể đặt một câu hỏi chung về việc di chuyển khỏi AppCache trên Stack Overflow bằng cách sử dụng thẻ html5-appcache.

Nếu bạn gặp lỗi liên quan đến việc xoá AppCache của Chrome, vui lòng báo cáo lỗi đó bằng công cụ theo dõi lỗi của Chromium.

Hình ảnh chính dựa trên Bảo tàng Viện Smithsonian, Acc. 11-007, Hộp 020, Hình ảnh số MNH-4477.