Chrome 第 85 版預設停止支援 AppCache。大部分開發人員現在應該先關閉 AppCache,不需再等候。
根據先前的公告,Chrome 和其他以 Chromium 為基礎的瀏覽器將不再支援 AppCache。我們建議開發人員立即停止使用 AppCache,不要再等待。
服務工作處理程序 (目前瀏覽器受到廣泛支援) 提供的替代方案可以取代 AppCache 提供的離線體驗。請參閱遷移策略。
時間軸
Chrome 發布時間表最近有變動,因此這些步驟的時間可能會有所不同。我們會盡力更新這份時間表,但目前請盡快移除 AppCache,不要等待特定里程碑。
雖然「已淘汰」的功能仍會存在,但系統會記錄警告訊息,建議您不要使用。瀏覽器中已不再提供「已移除」功能。
在不安全內容中將無法再使用 Web SQL | Chrome 50 (2016 年 4 月) |
從不安全的環境中移除 | Chrome 70 (2018 年 10 月) |
在安全環境中淘汰 | Chrome 79 (2019 年 12 月) |
AppCache 範圍限制 | Chrome 80 (2020 年 2 月) |
「Reverse」來源試用期開始 | Chrome 84 (2020 年 7 月) |
從安全內容中移除,但參與來源試用的內容除外 | Chrome 85 (2020 年 8 月) |
完成從安全內容中移除,並完成來源試用 | 2021 年 10 月 5 日 (約為 Chrome 95) |
來源試用
時間表列出兩個即將到來的移除里程碑。自 Chrome 85 版起,Chrome 預設將不再提供 AppCache。如果開發人員需要更多時間從 AppCache 遷移,可以註冊「反向」原始版本試用期,延長網路應用程式使用 AppCache 的時間。來源試用將從 Chrome 第 84 版開始 (在 Chrome 第 85 版預設移除內容前),預計會持續到 2021 年 10 月 5 日 (約為 Chrome 95 版本)。屆時,我們會將所有使用者從 AppCache 完整移除,即使先前已申請來源試用也一樣。
如要參與「反向」來源試驗,請按照下列步驟操作:
- 針對來源要求權杖。
- 將符記新增至 HTML 網頁。有兩種方法可以執行這項操作:
- 在每個網頁的標頭中加入
origin-trial
<meta>
標記。例如:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
- 或者,您也可以設定伺服器,讓伺服器傳回包含
Origin-Trial
HTTP 標頭的回應。產生的回應標頭應如下所示:Origin-Trial: TOKEN_GOES_HERE
- 在每個網頁的標頭中加入
- 將相同的符記新增至 AppCache 資訊清單。請在資訊清單中使用新的欄位,並採用以下格式:
ORIGIN-TRIAL:
TOKEN_GOES_HERE
(您需要在 ORIGIN-TRIAL
和權杖之間新增一行)。
您可以查看下方嵌入的範例專案,瞭解如何在 index.html
和 manifest.appcache
檔案中新增正確的來源試用金符記。
為什麼需要在多個位置使用符記?
相同來源試用權杖必須與下列項目建立關聯:
- 所有使用 AppCache 的 HTML 頁面。
- 所有 AppCache 資訊清單,透過
ORIGIN-TRIAL
資訊清單欄位。
如果您先前曾參與原始版本試驗,可能會在 HTML 網頁中加入符記。AppCache「反向」來源試用是特別的,因為您也需要將權杖與每個 AppCache 資訊清單建立關聯。
將原點試用權杖新增至 HTML 頁面,即可在網頁應用程式中啟用 window.applicationCache
介面。未與符記建立關聯的網頁無法使用 window.applicationCache
方法和事件。沒有權杖的網頁也無法從 AppCache 載入資源。自 Chrome 85 版起,這些應用程式會以 AppCache 不存在的情況運作。
在您的 AppCache 資訊清單中加入來源試用權杖,代表每個資訊清單仍然有效。從 Chrome 85 開始,任何沒有 ORIGIN-TRIAL
欄位的資訊清單都會視為格式錯誤,系統會忽略資訊清單中的規則。
Origin 試用方案的部署時間和運作方式
雖然 Chrome 第 84 版正式開始「反向」來源試用,但您仍可立即申請來源試用,並將權杖加入 HTML 和 AppCache 資訊清單。隨著網頁應用程式的目標對象逐漸升級至 Chrome 84,您先前新增的任何符記都會生效。
將符記新增至 AppCache 資訊清單後,請前往 about://appcache-internals
確認本機 Chrome 例項 (84 以上版本) 已正確將來源試用版符記與資訊清單的快取項目建立關聯。如果系統偵測到原始試播,您應該會在該頁面上看到與資訊清單相關聯的 Token Expires: Tue Apr 06 2021...
欄位:
在移除前進行測試
強烈建議您盡快改用 AppCache。如要測試移除網頁應用程式中的 AppCache,請使用 about://flags/#app-cache
旗標模擬移除作業。自 Chrome 第 84 版起,您可以使用這個旗標。
遷移策略
目前的瀏覽器廣泛支援 Service Worker,可提供與 AppCache 提供的離線體驗不同的替代方案。
我們提供了一個 polyfill,利用 Service Worker 複製 AppCache 的某些功能,但不會複製整個 AppCache 介面。具體來說,該函式不會取代 window.applicationCache
介面或相關的 AppCache 事件。
如果是較複雜的情況,您可以使用 Workbox 等程式庫輕鬆為網頁應用程式建立新型 Service Worker。
Service worker 和 AppCache 互斥
在制定遷移策略時,請注意,Chrome 會在 Service Worker 控管下載入的任何網頁上停用 AppCache 功能。換句話說,只要您部署控管特定網頁的 Service Worker,就無法再在該網頁上使用 AppCache。
因此,我們建議您不要嘗試逐一遷移至服務工作者。如果部署的服務工作者只包含部分快取邏輯,那麼這麼做就錯了。您無法使用 AppCache 來「填補空白」。
同樣地,如果您在 AppCache 移除前部署服務工作者,然後發現需要回溯至先前的 AppCache 實作項目,請務必取消註冊該服務工作者。只要指定網頁的範圍內有註冊的 Service Worker,就不會使用 AppCache。
跨平台的故事
如要進一步瞭解特定瀏覽器供應商的 AppCache 移除計畫,建議您與對方聯絡。
所有平台的 Firefox
Firefox 在第 44 版 (2015 年 9 月) 淘汰,且自 2019 年 9 月起,在 Beta 版和夜間版本已停止支援這項功能。
Safari (iOS 和 macOS)
Safari 自 2018 年初淘汰 AppCache。
搭配 Chrome 的 iOS
iOS 版 Chrome 屬於特殊情況,因為它使用的瀏覽器引擎與其他平台的 Chrome 不同,而是使用 WKWebView。目前 iOS 應用程式不支援使用 WKWebView 的服務工作者,而 Chrome 的 AppCache 移除公告並未涵蓋 iOS 版 Chrome 上的 AppCache 可用性。如果您知道自己的網路應用程式有大量 Chrome for iOS 目標對象,請記住這一點。
Android WebView
部分 Android 應用程式開發人員會使用 Chrome WebView 顯示網頁內容,也可能會使用 AppCache。不過,您無法為 WebView 啟用來源試用功能。因此,Chrome WebView 將支援 AppCache,無來源試用,直到最終移除作業於 Chrome 90 版生效為止。
瞭解詳情
以下是開發人員從 AppCache 遷移至服務工作程式的相關資源。
文章
工具
取得說明
如果在使用特定工具時遇到問題,請在其 GitHub 存放區中提出問題。
您可以在 Stack Overflow 上使用標記 html5-appcache
,提出從 AppCache 遷出的一般問題。
如果您遇到與 Chrome 移除 AppCache 相關的錯誤,請使用 Chromium Issue Tracker 回報。
主頁橫幅圖片,根據 史密森尼學會檔案館,Acc. 11-007, Box 020, Image No. MNH-4477。