AppCache の削除の準備

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 月)
「リバース」オリジン トライアルの開始 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 つの方法があります。
    • 各ページのヘッダーに 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 の機能の一部を複製するpolyfillが用意されています。特に、window.applicationCache インターフェースや関連する AppCache イベントの代わりとなるものはありません。

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

Service Worker と AppCache は相互に排他的

移行戦略に取り組む際は、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 のサポートを削除しました。

iOS 版および macOS 版 Safari

Safari は 2018 年初頭に AppCache を非推奨にしました。

iOS(Chrome)

Chrome for iOS は、他のプラットフォームの Chrome とは異なるブラウザ エンジンである WKWebView を使用する特殊なケースです。Service Worker は現在、WKWebView を使用する iOS アプリでサポートされていません。Chrome の AppCache 削除のお知らせには、Chrome for iOS での AppCache の提供は含まれていません。ウェブアプリの Chrome for iOS ユーザーがかなり多いことがわかっている場合は、この点に注意してください。

Android WebView

Android アプリのデベロッパーは、ウェブ コンテンツの表示に Chrome の WebView を使用することがあります。また、AppCache を使用することもあります。ただし、WebView のオリジン トライアルを有効にすることはできません。そのため、Chrome WebView では、Chrome 90 で最終的な削除が行われるまで、オリジン トライアルなしで AppCache がサポートされます。

詳細

AppCache から Service Worker に移行するデベロッパー向けのリソースを以下に示します。

記事

ツール

参考情報

特定のツールを使用して問題が発生した場合は、そのツールの GitHub リポジトリで問題を報告してください。

AppCache からの移行に関する一般的な質問は、Stack Overflow でタグ html5-appcache を使用して行うことができます。

Chrome の AppCache の削除に関連するバグが発生した場合は、Chromium の Issue Tracker を使用してご報告ください

Smithsonian Institution Archives(Acc. 11-007、Box 020、画像番号 MNH-4477