正在準備移除 AppCache

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

我們已按照先前的公告說明,Chrome 和其他以 Chromium 為基礎的瀏覽器將不再支援 AppCache。我們建議開發人員立即停用 AppCache,無須再等候。

Service Worker, 現有瀏覽器廣泛支援,提供除了可離線使用的檔案之外, 的使用體驗。請參閱遷移策略

時間軸

Chrome 發布時間表的近期異動表示上述部分步驟的時間可能會有所不同。我們會嘗試提供最新的時間表,但屆時請盡快退出 AppCache,不必等待特定里程碑。

「已淘汰」功能,但記錄警告訊息令人不悅「已移除」瀏覽器內已不存在該功能。

在不安全的環境中淘汰 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 欄位的資訊清單都將視為格式錯誤,並忽略資訊清單中的規則。

來源試用部署時間和物流

「反向」自 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,利用 Service Worker 複製 AppCache 的某些功能,但不會複製整個 AppCache 介面。具體來說,該函式不會取代 window.applicationCache 介面或相關的 AppCache 事件。

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

Service Worker 和 AppCache 互斥

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

因此,建議您不要嘗試逐一遷移到 Service Worker。部署僅包含部分快取邏輯的 Service Worker 會有誤。您無法藉由改回使用 AppCache「填補缺口」。

同樣的,如果您在移除 AppCache 前部署 Service Worker,但發現需要復原為先前的 AppCache 實作項目,請務必取消註冊該 Service 工作站。只要指定網頁範圍內已有已註冊的 Service Worker,系統就不會使用 AppCache。

跨平台故事

如要進一步瞭解他們的 AppCache 移除計畫,建議您洽詢特定的瀏覽器廠商。

所有平台上的 Firefox

Firefox 在第 44 版 (2015 年 9 月) 淘汰,且自 2019 年 9 月起,在 Beta 版和夜間版本已停止支援這項功能。

Safari (iOS 和 macOS)

Safari 自 2018 年初淘汰 AppCache。

搭配 Chrome 的 iOS

iOS 版 Chrome 相當特殊,因為在其他平台上的 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, Image No. MNH-4477