Theo mặc định, Chrome 85 sẽ loại bỏ tính năng hỗ trợ dành cho Bộ nhớ đệm của ứng dụng. Hầu hết các nhà phát triển nên di chuyển khỏi AppCache ngay bây giờ và không phải chờ đợi thêm nữa.
Theo 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. Các nhà phát triển nên di chuyển khỏi AppCache ngay bây giờ, thay vì phải đợi lâu hơn.
Trình chạy dịch vụ, đượ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 mà AppCache mang lại. Hãy xem phần Chiến lược di chuyển.
Dòng thời gian
Những thay đổi gần đây trong lịch phát hành Chrome có nghĩa là thời gian của một số bước trong số này có thể khác nhau. Chúng tôi sẽ cố gắng cập nhật dòng thời gian này, nhưng tại thời điểm này, vui lòng di chuyển khỏi AppCache sớm nhất có thể, thay vì đợi đến những mốc cụ thể.
"Không dùng nữa" tính năng này vẫn tồn tại nhưng nhật ký cảnh báo ngăn cản việc sử dụng. Một "đã loại bỏ" 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) |
Xoá khỏi bối 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) |
Hạn chế về phạm vi của Bộ nhớ đệm của ứng dụng | Chrome 80 (Tháng 2 năm 2020) |
"Đảo ngược" bắt đầu dùng thử theo nguyên gốc | Chrome 84 (tháng 7 năm 2020) |
Xoá khỏi bối cảnh an toàn, 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 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, theo mặc định, Bộ nhớ đệm của ứng dụng sẽ không còn hoạt động trong Chrome nữa. Các nhà phát triển cần thêm thời gian để di chuyển khỏi AppCache có thể đăng ký tính năng "đảo ngược" bản dùng thử theo nguyên gốc để mở rộng khả năng sử dụng AppCache cho các ứ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.
Để tham gia vào quá trình "đảo ngược" bản dùng thử theo nguyên gốc:
- Yêu cầu một mã thông báo cho máy chủ gốc của bạn.
- Thêm mã thông báo vào các trang HTML của bạn. Có hai cách để làm điều đó:
- Thêm một 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
- Thêm một thẻ
- Thêm cùng một mã thông báo 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 có định dạng như sau:
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ể xem một dự án mẫu được nhúng bên dưới, minh hoạ cách thêm đúng mã thông báo dùng thử theo nguyên gốc vào cả tệp index.html
và manifest.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 của bạn có 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 trước đây bạn đã tham gia các phiên dùng thử theo nguyên gốc, thì có thể bạn chỉ thêm mã thông báo vào các trang HTML của mình. AppCache "đảo ngược" bản dùng thử theo nguyên gốc đặc biệt ở chỗ 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ã dùng thử theo nguyên gốc vào các trang HTML sẽ bật giao diện window.applicationCache
từ trong các ứng dụng web của bạn. Những trang không liên kết với một 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, chúng 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
Trong khi thuật toán "đảo ngược" bản dùng thử theo nguyên gốc chính thức bắt đầu với Chrome 84, bạn có thể đăng ký bản dùng thử theo nguyên gốc ngay hôm nay và thêm mã thông báo vào tệp kê khai HTML và AppCache của mình. Khi đối tượng của ứng dụng web của bạn 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 thêm mã thông báo vào tệp kê khai AppCache, hãy truy cập about://appcache-internals
để xác nhận rằng phiên bản cục bộ của Chrome (phiên bản 84 trở lên) đã liên kết đúng cách mã thông báo bản dùng thử theo nguyên gốc với các mục nhập đã 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.](https://web.dev/static/articles/appcache-removal/image/aboutappcache-internal-70aedc3c15663.jpg?authuser=19&hl=vi)
Kiểm tra trước khi xoá
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 các ứng dụng web của mình, hãy sử dụng cờ about://flags/#app-cache
để mô phỏng quá trình xoá bộ nhớ đệm đó. Cờ này có sẵn kể 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 những trường hợp phức tạp hơn, các thư viện như Workbox có thể giúp bạn dễ dàng tạo một trình chạy dịch vụ hiện đại cho ứng dụng web.
Trình chạy dịch vụ và Bộ nhớ đệm của ứng dụng loại trừ lẫn nhau
Trong quá trình xây dựng chiến lược di chuyển, xin lưu ý rằng Chrome sẽ vô hiệu hoá chức năng AppCache trên mọi trang được tải dưới sự kiểm soát của một trình chạy dịch vụ. Nói cách khác, ngay khi triển khai trình chạy dịch vụ kiểm soát một trang nhất định, bạn không còn có 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ụ. Sẽ là thiếu sót nếu bạn triển khai một trình chạy dịch vụ chỉ chứa một số logic lưu vào bộ nhớ đệm. Bạn không thể dùng lại AppCache để "lấp đầy khoảng trống".
Tương tự như vậy, nếu bạn triển khai một trình chạy dịch vụ trước khi xoá AppCache, rồi phát hiện ra rằng bạn cần khôi phục về cách triển khai AppCache trước đó, bạn cần đảm bảo rằng bạn huỷ đăng ký trình chạy dịch vụ đó. Miễn là có một trình chạy dịch vụ đã đăng ký trong phạm vi cho một trang cụ thể, thì AppCache sẽ không được dùng.
Câu chuyện đa nền tảng
Chúng tôi khuyên 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 xóa AppCache của họ.
Firefox trên tất cả nền tảng
Firefox đã ngừng sử dụng AppCache trong bản phát hành 44 (tháng 9 năm 2015) và đã loại bỏ tính năng hỗ trợ bộ nhớ đệm này trong các bản dựng 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 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 dùng WKWebView và thông báo 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ể.
WebView trên Android
Một số nhà phát triển ứng dụng Android dùng WebView của Chrome để hiển thị nội dung web và cũng có thể 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
Dưới đây là một số tài nguyên dành cho các nhà phát triển di chuyển từ AppCache sang trình chạy dịch vụ.
Bài viết
- Service Workers: Giới thiệu
- Vòng đời của trình chạy dịch vụ
- Đào tạo về ứng dụng web tiến bộ
- Độ tin cậy của mạng
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ở 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 trình theo dõi lỗi của Chromium.
Hình ảnh chính dựa trên Smithsonian Institution Archives, Acc. 11-007, Box 020, Ảnh số MNH-4477.