Chrome 85 では、AppCache のサポートがデフォルトで削除されます。ほとんどのデベロッパーは、今すぐ AppCache から移行すべきであり、これ以上待つべきではありません。
以前のお知らせのとおり、Chrome およびその他の Chromium ベースのブラウザから AppCache のサポートが削除されます。デベロッパーの皆様には、これ以上待たずに、今すぐ AppCache から移行することをおすすめします。
現在のブラウザで広くサポートされている Service Worker は、AppCache が提供していたオフライン エクスペリエンスを提供する代替手段となります。移行戦略をご覧ください。
タイムライン
Chrome のリリース スケジュールが最近変更されたため、これらの手順のタイミングが異なる場合があります。このタイムラインを最新の状態に保つよう努めますが、現時点では、特定のマイルストーンを待つのではなく、できるだけ早く AppCache から移行してください。
非推奨の機能は引き続き存在しますが、使用を推奨しない警告メッセージがログに記録されます。「削除済み」の機能はブラウザに存在しなくなります。
安全でないコンテキストでのサポート終了 | 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 頃) |
オリジン トライアル
タイムラインには、削除予定の 2 つのマイルストーンが記載されています。Chrome 85 以降、Chrome で AppCache がデフォルトで利用できなくなります。AppCache からの移行にさらに時間が必要なデベロッパーは、「逆」オリジン トライアルに登録して、ウェブアプリでの AppCache の利用可能期間を延長できます。オリジン トライアルは Chrome 84 で開始され(Chrome 85 でのデフォルトの削除に先立って)、2021 年 10 月 5 日(Chrome 95 頃)まで有効です。この時点で、オリジン トライアルに登録していたユーザーを含め、すべてのユーザーに対して AppCache が完全に削除されます。
「逆」オリジン トライアルに参加するには:
- オリジン用のトークンをリクエストします。
- トークンを HTML ページに追加します。これには 2 つの方法があります。
- 各ページの head に
origin-trial
<meta>
タグを追加します。(例:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
)。 - または、
Origin-Trial
HTTP ヘッダーを含むレスポンスを返すようにサーバーを構成します。結果のレスポンス ヘッダーは次のようになります。Origin-Trial: TOKEN_GOES_HERE
- 各ページの head に
- 同じトークンを AppCache マニフェストに追加します。マニフェストの新しいフィールドで、次の形式で指定します。
ORIGIN-TRIAL:
TOKEN_GOES_HERE
(ORIGIN-TRIAL
とトークンの間に改行が必要です)。
トークンが複数の場所で必要なのはなぜですか?
同一オリジン トライアル トークンは、次のものに関連付ける必要があります。
- 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...
のフィールドがページに表示されます。

削除前のテスト
できるだけ早く AppCache から移行することを強くおすすめします。ウェブアプリで AppCache の削除をテストする場合は、about://flags/#app-cache
フラグを使用して削除をシミュレートします。このフラグは Chrome 84 以降で利用できます。
移行戦略
Service Worker は現在のブラウザで幅広くサポートされており、AppCache が提供するオフライン エクスペリエンスの代替手段となります。
AppCache の機能の一部を複製するために、サービス ワーカーを使用する polyfill を提供しています。ただし、AppCache インターフェース全体を複製するわけではありません。特に、window.applicationCache
インターフェースや関連する AppCache イベントの代替手段は提供されません。
より複雑なケースでは、Workbox などのライブラリを使用すると、ウェブアプリ用の最新のサービス ワーカーを簡単に作成できます。
Service Worker と AppCache は相互に排他的
移行戦略を策定する際は、Service Worker の制御下で読み込まれるページでは Chrome が AppCache 機能を無効にすることを念頭に置いてください。つまり、特定のページを制御する Service Worker をデプロイすると、そのページで AppCache を使用できなくなります。
そのため、サービス ワーカーへの移行を段階的に行うことはおすすめしません。キャッシュ保存ロジックの一部のみを含むサービス ワーカーをデプロイするのは間違いです。AppCache にフォールバックして「ギャップを埋める」ことはできません。
同様に、AppCache の削除前にサービス ワーカーをデプロイし、以前の AppCache 実装にロールバックする必要があることが判明した場合は、そのサービス ワーカーを登録解除する必要があります。特定のページのスコープ内に登録済みの Service Worker がある限り、AppCache は使用されません。
クロス プラットフォームのストーリー
AppCache の削除計画について詳しくは、各ブラウザ ベンダーにお問い合わせください。
Firefox(すべてのプラットフォーム)
Firefox はリリース 44(2015 年 9 月)で AppCache を非推奨とし、2019 年 9 月の時点でベータ版とナイトリー ビルドでサポートを削除しました。
Safari(iOS および macOS)
Safari は 2018 年初頭に AppCache を非推奨にしました。
iOS(Chrome)
iOS 版 Chrome は、他のプラットフォームの Chrome とは異なるブラウザ エンジン(WKWebView)を使用するため、特殊なケースです。現在、WKWebView を使用する iOS アプリではサービス ワーカーはサポートされていません。また、Chrome の AppCache 削除に関するお知らせは、iOS 版 Chrome での AppCache の利用可能性については言及していません。ウェブアプリのユーザーの多くが Chrome for iOS を利用している場合は、この点にご留意ください。
Android WebView
Android アプリのデベロッパーの中には、ウェブ コンテンツを表示するために Chrome WebView を使用している人がいます。また、AppCache を使用している人もいます。ただし、WebView でオリジン トライアルを有効にすることはできません。そのため、Chrome WebView では、Chrome 90 での最終的な削除が実施されるまで、オリジン トライアルなしで AppCache がサポートされます。
その他の情報
AppCache から Service Worker に移行するデベロッパー向けのリソースを以下に示します。
記事
ツール
困ったときは
特定のツールの使用中に問題が発生した場合は、その GitHub リポジトリで問題を報告してください。
AppCache からの移行に関する一般的な質問は、タグ html5-appcache
を使用して Stack Overflow で行うことができます。
Chrome の AppCache の削除に関連するバグが発生した場合は、Chromium Issue Tracker を使用して報告してください。