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 は、オリジン トライアルに登録したユーザーを含むすべての人から完全に削除されます。
「リバース」オリジン トライアルに参加するには:
- 送信元のトークンをリクエストします。
- トークンを HTML ページに追加します。これには次の 2 つの方法があります。
- 各ページのヘッダーに
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 の機能の一部を複製する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。