人気のあるサイトが、HTML 5アプリケーションのキャッシュを使用して、設計どおりに静的リソースを保存していないことは明らかです。
アプリケーションキャッシングが何のために設計されているかを誤解しました。アプリケーションキャッシュ仕様の最初の段落は次のとおりです。
ユーザーがネットワーク接続が利用できない場合でも(たとえば、ISPのカバレッジエリア外に移動しているため)、ユーザーがWebアプリケーションやドキュメントを引き続き操作できるようにするために、作成者はWebに必要なファイルを一覧表示するマニフェストを提供できます。アプリケーションがオフラインで動作し、ユーザーのブラウザがオフラインで使用するためにファイルのコピーを保持するようにします。
http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#introduction-5
そのため、アプリケーションキャッシュは、ネットワーク接続が利用できない場合にWebアプリの作成者がアプリを機能させることができるように設計されています。
Google、Twitter、Facebookがネットワーク接続なしでどのように役立つか想像できません。それらはすべて、ユーザーがサーバー上の膨大な量のデータ(TwitterやFacebookの場合は他のユーザーに関するデータ)を操作することに依存しています。それらは、ネットワーク接続なしでは本質的に役に立たない。
同様に、localStorage
変更される可能性のあるページリソースを保存するようには設計されていません。(これらのサイトがCSS、JavaScript、および画像ファイルをlocalStorageに保存できることを示唆していると思います—誤解している場合はお詫びします。)
この仕様では、構造化データをクライアント側に保存するために、HTTPセッションCookieと同様の2つの関連メカニズムが導入されています...
1つ目は、ユーザーが1つのトランザクションを実行しているが、異なるウィンドウで同時に複数のトランザクションを実行している可能性があるシナリオ向けに設計されています...
2番目のストレージメカニズムは、複数のウィンドウにまたがるストレージ用に設計されており、現在のセッションを超えて持続します。特に、Webアプリケーションは、パフォーマンス上の理由から、ユーザーが作成したドキュメント全体やユーザーのメールボックスなど、メガバイトのユーザーデータをクライアント側に保存したい場合があります...
http://www.w3.org/TR/webstorage/#introduction
CSS、JavaScript、および画像ファイルに使用するlocalStorage
には、ページに必要な各リソースをチェックするJavaScriptが必要localStorage
です。次に、サーバーをチェックして新しいバージョンがあるかどうかを確認し、必要に応じて、ページのDOMにリソースを追加しました(新しい場合はlocalSorageに保存しました)。
これは、基本的にWebブラウザがすでに実行しているキャッシュを複製するための多くのコードです。また、JavaScriptがlocalStorage
サーバーをチェックしている間、ページはレンダリングを停止します。一方、ブラウザがCSSと画像ファイル自体をダウンロードすると、ページはレンダリングを続行できます。