AppCache の削除の準備

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 は、オリジン トライアルに登録していたユーザーも含め、すべてのユーザーに対して完全に削除されます。

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

  1. 送信元のトークンをリクエストします。
  2. トークンを HTML ページに追加します。方法は2 つあります。
    • 各ページの head に 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 ページ
  • 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 が提供するオフライン エクスペリエンスの代替手段として使用できます。

Service Worker を使用して AppCache の機能の一部を複製するポリフィルを用意していますが、これは AppCache インターフェース全体が複製されるわけではありません。特に、window.applicationCache インターフェースや関連する AppCache イベントの代替は提供されません。

より複雑なケースでは、Workbox などのライブラリを使用すると、ウェブアプリ用の最新の Service Worker を簡単に作成できます。

サービス ワーカーと AppCache は相互に排他的

移行戦略を策定する際、Chrome では、Service Worker の制御のもとで読み込まれたすべてのページで AppCache 機能が無効になりますのでご注意ください。つまり、特定のページを制御する Service Worker をデプロイすると、そのページで AppCache を使用できなくなります。

そのため、サービス ワーカーへの移行は、部分的に行うことはおすすめしません。キャッシュ ロジックの一部のみを含む Service Worker をデプロイするのは誤りです。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 の可用性について言及していません。ウェブアプリのユーザーに iOS 版 Chrome のユーザーが多数含まれていることが判明した場合は、この点にご注意ください。

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 を使用して報告してください。

スミソニアン協会アーカイブ、Acc. 11-007、ボックス 020、画像番号 MNH-4477