0

これは論理的にこの質問に続く質問です:

HTML5アプリケーションのキャッシュは適切ですか?

人気のあるサイトが、HTML 5アプリケーションのキャッシュを使用して、設計どおりに静的リソースを保存していないことは明らかです。

<html>タグのマニフェスト属性を確認するだけです。ありません。

さらに詳しく調べると、HTML5localStorageも使用されていません。

テストケースとして私は見ました

  • www.google.com
  • www.twitter.com
  • www.facebook.com

コンソールに移動して入力するだけです

localStorage.

コンソールにキーのリストが表示されます。

これらのサイトのどれも静的データをディスクに保存しませんか?

どうしてこれなの?

変更されていないリソースをネットワークにヒットさせるのは、リソースの浪費のようです。

詳述する。[再読み込み]をクリックすると、ページは静的リソースを再ダウンロードします。Googleを使用すると、URLパスで使用されているstaticという単語を確認することもできます。ただし、この質問では、単語の概念的な意味を使用します。

4

1 に答える 1

6

人気のあるサイトが、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と画像ファイル自体をダウンロードすると、ページはレンダリングを続行できます。

于 2013-03-20T23:24:44.753 に答える