AppCache のサポートは Chrome 85 でデフォルトで終了します。ほとんどのデベロッパーは、今すぐ 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 月) |
「反転」オリジン トライアル開始 | Chrome 84(2020 年 7 月) |
セキュアなコンテキストからの削除(オリジン トライアルにオプトインしたものを除く) | Chrome 85(2020 年 8 月) |
オリジン トライアルの完了により、すべてのユーザーの安全なコンテキストからの完全な削除 | 2021 年 10 月 5 日(約 Chrome 95) |
オリジン トライアル
タイムラインには、今後予定されている削除のマイルストーンが 2 つ記載されています。Chrome 85 以降、Chrome で AppCache をデフォルトで使用できなくなります。AppCache からの移行に時間が必要な場合は、こちらから「リバース」にオリジン トライアルを実施し、ウェブアプリでの AppCache の利用を延長。オリジン トライアルは(Chrome 85 のデフォルトの削除に先立って)Chrome 84 で開始され、2021 年 10 月 5 日まで(約 Chrome 95)有効です。この時点で、AppCache はすべてのユーザー(オリジン トライアルに登録したユーザーを含む)から完全に削除されます。
「リバース」に参加するためのオリジン トライアル:
- 送信元のトークンをリクエストします。
- トークンを HTML ページに追加します。これには次の 2 つの方法があります。
<ph type="x-smartling-placeholder">
- </ph>
- 各ページの見出しに
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
フィールドがないマニフェストは不正な形式として扱われ、マニフェスト内のルールは無視されます。
オリジン トライアルのデプロイのタイミングとロジスティクス
一方、「逆方向」はオリジン トライアルが 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 の機能の一部を複製するために Service Worker を使用するポリフィルが用意されていますが、これは AppCache インターフェース全体が複製されるわけではありません。特に、window.applicationCache
インターフェースや関連する AppCache イベントに代わるものではありません。
より複雑なケースでは、Workbox などのライブラリを使用すると、ウェブアプリ用の最新の Service Worker を簡単に作成できます。
Service Worker と AppCache は相互に排他的
移行戦略を策定する際、Chrome では、Service Worker の制御のもとで読み込まれたすべてのページで AppCache 機能が無効になりますのでご注意ください。つまり、特定のページを制御する Service Worker をデプロイすると、すぐにそのページで AppCache を使用できなくなります。
このため、Service Worker に 1 つずつ移行することはおすすめしません。キャッシュ ロジックの一部のみを含む Service Worker をデプロイするのは誤りです。AppCache にフォールバックして「ギャップを埋める」ことはできません。
同様に、AppCache を削除する前に Service Worker をデプロイし、以前の AppCache 実装にロールバックする必要があることが判明した場合は、その Service Worker の登録を解除する必要があります。特定のページのスコープ内に登録済みの 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 アプリでは Service Worker がサポートされていません。また、Chrome の AppCache の削除に関するお知らせには、Chrome for iOS での AppCache の使用は含まれていません。ウェブアプリに Chrome for iOS のユーザーがかなり多いことがわかっている場合は、この点に注意してください。
Android の WebView
Android アプリのデベロッパーの中には、ウェブ コンテンツの表示に Chrome の WebView を使用する場合もあります。また、AppCache を使用する場合もあります。ただし、WebView でオリジン トライアルを有効にすることはできません。この点を考慮すると、Chrome WebView は最終的な削除が行われるまでオリジン トライアルなしで AppCache をサポートする予定です(Chrome 90 で予定)。
その他の情報
ここでは、AppCache から Service Worker に移行するデベロッパー向けのリソースを紹介します。
記事
ツール
困ったときは
特定のツールの使用中に問題が発生した場合は、GitHub リポジトリで問題をオープンします。
AppCache からの移行に関する一般的な質問は、Stack Overflow でタグ html5-appcache
を使用して行うことができます。
Chrome の AppCache の削除に関連するバグを見つけた場合は、Chromium の Issue Tracker を使用して報告してください。
出典: Smithsonian Institution Archives, Acc.11-007、Box 020、画像番号 MNH-4477。