正在準備移除 AppCache

Chrome 85 預設會停用 AppCache 支援功能。大部分開發人員現在應該先關閉 AppCache,不需再等候。

根據先前的公告,Chrome 和其他以 Chromium 為基礎的瀏覽器將不再支援 AppCache。我們建議開發人員立即停止使用 AppCache,不要再等待。

Service worker 在目前的瀏覽器中廣泛支援,可提供 AppCache 提供的離線體驗。請參閱遷移策略

時間軸

Chrome 發布時間表的近期異動表示上述部分步驟的時間可能會有所不同。我們會盡力更新這份時間表,但目前請盡快移除 AppCache,不要等待特定里程碑。

雖然「已淘汰」的功能仍會存在,但系統會記錄警告訊息,建議您不要使用。瀏覽器中已不再提供「已移除」功能。

在不安全內容中將無法再使用 Web SQL Chrome 50 (2016 年 4 月)
從不安全的環境中移除 Chrome 70 (2018 年 10 月)
安全內容中的淘汰項目 Chrome 79 (2019 年 12 月)
AppCache 範圍限制 Chrome 80 (2020 年 2 月)
開始「反向」來源試用 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,即使是已註冊原始版本試用版的使用者也不例外。

如要參與「反向」來源試驗,請按照下列步驟操作:

  1. 為來源要求權杖
  2. 將符記新增至 HTML 網頁。有兩種方法可以執行這項操作:
    • 在每個網頁的標頭中加入 origin-trial <meta> 標記。例如:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • 或者,您也可以設定伺服器,讓伺服器傳回包含 Origin-Trial HTTP 標頭的回應。產生的回應標頭應如下所示:Origin-Trial: TOKEN_GOES_HERE
  3. 將相同的權杖新增至 AppCache 資訊清單。請在資訊清單中使用新的欄位,並採用以下格式:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(您需要在 ORIGIN-TRIAL 和權杖之間新增一行)。

您可以查看下方嵌入的範例專案,瞭解如何在 index.htmlmanifest.appcache 檔案中新增正確的來源試用金符記。

為什麼不同位置需要符記?

相同來源試用權杖必須與下列項目建立關聯:

  • 所有使用 AppCache 的 HTML 頁面
  • 透過 ORIGIN-TRIAL 資訊清單欄位,建立所有 AppCache 資訊清單

如果您曾參加來源試用,可能是已將權杖加進 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... 欄位:

about://appcache-internals 介面,顯示可辨識的權杖。

移除前測試

強烈建議您盡快改用 AppCache。如要測試移除網頁應用程式中的 AppCache,請使用 about://flags/#app-cache 旗標模擬移除作業。這個旗標自 Chrome 84 起開放使用。

遷移策略

目前的瀏覽器廣泛支援 Service Worker,可提供與 AppCache 提供的離線體驗不同的替代方案。

我們提供的 polyfill 會使用服務工作站複製 AppCache 的部分功能,但不會複製整個 AppCache 介面。具體來說,該函式不會取代 window.applicationCache 介面或相關的 AppCache 事件。

如果是較複雜的情況,您可以使用 Workbox 等程式庫輕鬆為網頁應用程式建立新型 Service Worker。

Service worker 和 AppCache 互斥

提醒您,制定遷移策略時請注意,Chrome 會在服務工作處理程序控制下載入的任何網頁中,停用 AppCache 功能。換句話說,只要您部署控管特定網頁的 Service Worker,就無法再在該網頁上使用 AppCache。

因此,我們建議您不要嘗試逐一遷移至服務工作者。如果部署的服務工作者只包含部分快取邏輯,那麼這麼做就錯了。您無法使用 AppCache 來「填補空白」。

同樣地,如果您在 AppCache 移除前部署服務工作者,然後發現需要回溯至先前的 AppCache 實作項目,請務必取消註冊該服務工作者。只要指定網頁的範圍內有註冊的 Service Worker,就不會使用 AppCache。

跨平台故事

如要進一步瞭解特定瀏覽器供應商的 AppCache 移除計畫,建議您與對方聯絡。

所有平台的 Firefox

Firefox 在 44 版 (2015 年 9 月) 淘汰 AppCache,並自 2019 年 9 月起,在 Beta 版和 Nightly 版本中移除對 AppCache 的支援。

iOS 和 macOS 上的 Safari

Safari 已在 2018 年初淘汰 AppCache。

搭配 Chrome 的 iOS

iOS 版 Chrome 屬於特殊情況,因為它使用的瀏覽器引擎與其他平台的 Chrome 不同,而是使用 WKWebView。使用 WKWebView 的 iOS 應用程式目前不支援 Service Worker,且 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 回報問題

主頁橫幅,根據 Smithsonian Institution Archives, Acc 製作。11-007,Box 020,圖片編號 MNH-4477