Chrome 85 sẽ loại bỏ hỗ trợ cho AppCache theo mặc định. Hầu hết các nhà phát triển nên di chuyển khỏi AppCache ngay và không cần chờ 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 dựa trên Chromium khác. Các nhà phát triển nên di chuyển khỏi AppCache ngay bây giờ, thay vì chờ đợi thêm lâu.
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 đã từng cung cấp. Xem phần Chiến lược di chuyển.
Lịch trình
Những thay đổi gần đây đối với 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ể thay đổi. Chúng tôi sẽ cố gắng cập nhật tiến trình này. Tuy nhiên, 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ì đợi đến các mốc cụ thể.
Tính năng "không dùng nữa" vẫn tồn tại nhưng ghi lại các thông báo cảnh báo không khuyến khích 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) |
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ế phạm vi AppCache | Chrome 80 (tháng 2 năm 2020) |
Thời gian chạy bản dùng thử theo nguyên gốc "Đảo ngược" đã bắt đầu | Chrome 84 (tháng 7 năm 2020) |
Xoá khỏi bối cảnh an toàn, ngoại trừ những ứng dụng đã chọn sử dụng 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 ngữ cảnh an toàn cho mọi người, cùng với việc 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 liệt kê 2 mốc quan trọng sắp tới cho việc xoá. Kể từ Chrome 85, AppCache sẽ không còn dùng được trong Chrome theo mặc định 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ý bản dùng thử theo nguyên gốc "ngược" để mở rộng phạm vi cung cấp 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 trong Chrome 84 (trước khi Chrome 85 bị xoá theo mặc định) và bắt đầu có hiệu lực đến hết ngày 5 tháng 10 năm 2021 (khoảng Chrome 95). Khi đó, AppCache sẽ bị xoá hoàn toàn cho 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 chương trình dùng thử theo nguyên gốc "ngược":
- Yêu cầu mã thông báo cho nguồn gốc của bạn.
- Thêm mã thông báo vào các trang HTML của bạn. Có 2 cách để thực hiện việc đó:
- 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, bạn có thể định cấu hình máy chủ để trả về những phản hồi chứa tiêu đề HTTP
Origin-Trial
. Tiêu đề phản hồi nhận được sẽ có dạng như sau:Origin-Trial: TOKEN_GOES_HERE
- Thêm một thẻ
- 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 có đị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ể 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
.
Tại 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ã dùng thử theo nguyên gốc với:
- Tất cả các trang HTML của bạn 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 dùng thử theo nguyên gốc, có thể bạn chỉ thêm mã thông báo vào các trang HTML của mình. Bản dùng thử theo nguyên gốc "reverse" của AppCache đặc biệt vì bạn cũng cần liên kết mã thông báo với từng tệp kê khai AppCache của mình.
Việc thêm mã thông báo dùng thử theo nguyên gốc vào các trang HTML sẽ kích hoạ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ã thông báo sẽ không thể sử dụng các sự kiện và phương thức 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 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 triển khai chiến dịch thử nghiệm theo nguyên gốc và kho vận
Mặc dù bản dùng thử theo nguyên gốc "Đảo ngược" chính thức bắt đầu từ Chrome 84, nhưng 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 nâng cấp dần 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 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 mã thông báo dùng thử theo nguyên 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 nhận dạng, 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:
![Giao diện about://appcache-internals cho thấy một mã thông báo được nhận dạng.](https://web.developers.google.cn/static/articles/appcache-removal/image/aboutappcache-internal-70aedc3c15663.jpg?authuser=5&hl=vi)
Kiểm thử trước khi xoá
Bạn nên di chuyển khỏi AppCache ngay khi có thể. Nếu bạn muốn kiểm thử việc xoá AppCache trên các ứng dụng web, hãy sử dụng cờ about://flags/#app-cache
để mô phỏng quy trình xoá. Cờ này có 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 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ù nó không sao chép toàn bộ giao diện AppCache. Cụ thể, nó không cung cấp lựa chọn thay thế cho giao diện window.applicationCache
hoặc các sự kiện AppCache 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 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 của mình.
Trình chạy dịch vụ và AppCache loại trừ lẫn nhau
Khi nghiên cứu chiến lược di chuyển, xin lưu ý rằng Chrome sẽ tắt chức năng AppCache trên mọi trang được tải dưới sự kiểm soát của trình chạy dịch vụ. Nói cách khác, ngay sau 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ể dùng AppCache trên trang đó nữa.
Do đó, bạn không nên cố gắng di chuyển từng phần của dịch vụ worker sang dịch vụ. Sẽ là sai lầm 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ể quay lại AppCache để "điền vào khoảng trống".
Tương tự, nếu triển khai một trình chạy dịch vụ trước khi xoá AppCache và sau đó phát hiện cần khôi phục về quá trình triển khai AppCache trước đó, thì bạn cần đảm bảo rằng mình huỷ đăng ký trình chạy dịch vụ đó. Miễn là có một trình chạy dịch vụ được đăng ký trong phạm vi một trang nhất định, thì AppCache sẽ không được dùng.
Câu chuyện về 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 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à ngừng hỗ trợ 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 không dùng nữa 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 sử dụng WKWebView và thông báo xoá AppCache của Chrome không bao gồm khả năng sử dụng AppCache trên Chrome dành cho iOS. Xin 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 lớn đối tượng Chrome dành cho iOS.
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ể 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. Ngoài ra, Chrome WebView sẽ hỗ trợ AppCache mà không cần bản dùng thử theo nguyên gốc cho đến khi quá trình xoá lần cuối 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 nhà phát triển di chuyển từ AppCache sang trình thực thi dịch vụ.
Bài viết
- Service Worker: Giới thiệu
- Vòng đời của Service Worker
- Đà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.
Bạn có thể đặt câu hỏi chung về việc di chuyển khỏi AppCache trên Stack Overflow bằ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 Kho lưu trữ của Viện Smithsonian, Acc. 11-007, Box 020, Hình ảnh số MNH-4477.