Webアプリケーションが2 GBのキャッシュをダウンロードする方法、および気付かない

過去数日間、 HTML5 Webアプリケーションのオフラインキャッシュを試し、テストを実行し、境界の状況でのブラウザーの動作を調査してきました。



これらの実験の1つは、最大キャッシュサイズの割り当てに関連付けられています。



2週間前、私はASP.NET MVCを使用してアプリケーションマニフェストを生成および送信することについて書きました。 同じコードを使用しますが、キャッシュに数百の7 MB PDFファイルが追加されます。



public ActionResult Manifest() { var cacheResources = new List<string>(); var n = 300; // Play with this number for (var i = 0; i < n; i++) cacheResources.Add("Content/" + Url.Content("book.pdf?" + i)); var manifestResult = new ManifestResult("1") { NetworkResources = new string[] { "*" }, CacheResources = cacheResources }; return manifestResult; }
      
      





最初は、1000個のPDFファイルをキャッシュに追加しようとしましたが、ブラウザーからエラーが発生しました。Chromeはクォータを超過したことを報告しました。



ファイル数を数回減らした結果、この制限が見つかりました。 クォータを超過することに関するエラーを受け取ることなく、300個のPDFファイルをキャッシュに追加することができました。



クロムで見る:// appcache-internals / 、単一のWebアプリケーションのキャッシュサイズが2.2ギガバイトであることを確認できます。







ユーザーとして、ブラウザで開いたWebサイトがバックグラウンドで疑わしい量のデータをダウンロードしていることを知りませんでした。 Chrome(17.0.963.83)も、私が知っている他のデスクトップブラウザも、これについて警告しません。 私のコンピュータにそんなに多くの情報をダウンロードして保存することは私の許可を得て行われるべきだと私には思えますが。



他に気づいたこと-クォータを使い果たした他のすべてのサイトは、キャッシュに何も書き込めなくなりました。 「最初に起きた人、それ、そしてスリッパ」というようなアプローチは、将来不満を引き起こすだろうと確信しています。



この問題を解決するには、applicationCache APIを使用して、クォータの超過に関するエラーを追跡し、ユーザーにchromeを開くためのヒントを含むメッセージを提供します:// appcache-internals /古いWebアプリケーションのキャッシュを削除して、新しいWebアプリケーション用のスペースを解放します。 かなり厄介に見えます。 ブラウザはもっとエレガントな方法でそれを行うことはできませんか?










All Articles