AppCache の削除の準備

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 はすべてのユーザー(オリジン トライアルに登録したユーザーを含む)から完全に削除されます。

「リバース」に参加するためのオリジン トライアル:

  1. 送信元のトークンをリクエストします。
  2. トークンを 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 のようになります。
  3. 同じトークンを 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... を含むフィールドがそのページに表示されます。

認識されたトークンを示す about://appcache-internals インターフェース

削除前のテスト

できるだけ早く 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。