Chrome 85 では、AppCache のサポートがデフォルトで削除されます。ほとんどのデベロッパーは、今すぐ AppCache から移行する必要があります。
以前のお知らせに沿って、Chrome と他の Chromium ベースのブラウザから AppCache のサポートが削除されます。デベロッパーの皆様には、これ以上待たずに AppCache から移行することをおすすめします。
現在のブラウザで広くサポートされている Service Worker は、AppCache が提供していたオフライン エクスペリエンスを提供する代替手段です。移行戦略をご覧ください。
タイムライン
Chrome のリリース スケジュールが最近変更されたため、これらの手順のタイミングが異なる場合があります。Google は、このタイムラインを最新の状態に保つよう努めますが、現時点では、特定のマイルストーンを待つのではなく、できるだけ早く 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) |
オリジン トライアル
タイムラインには、今後の削除マイルストーンが 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
とトークンの間に新しい行が必要です)。
以下に、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
フィールドが指定されていないマニフェストは形式が正しくないとして扱われ、マニフェスト内のルールは無視されます。
オリジン トライアルのデプロイのタイミングとロジスティクス
「リバース」オリジン トライアルは 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 によって提供されるオフライン エクスペリエンスに代わるものを提供します。
Google は、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 月)で AppCache を非推奨にしました。2019 年 9 月をもって、Beta ビルドと Nightly ビルドでの AppCache のサポートを廃止しました。
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 を使用して報告してください。