5

私たちのWebアプリケーションは、アプリケーションキャッシュ(キャッシュマニフェスト)を使用して、HTMLページとリソースをオフラインモードで復元します。HTMLページには、URIのパラメーターとしてsessionIDがあります。したがって、各ログアウトおよびログインアクションの後、sessionIdがURIで変更されたため、新しいHTMLページがアプリケーションキャッシュに保存されます。アプリケーションを数週間使用した後、一部のブラウザの動作が遅くなります。また、アプリケーションキャッシュのサイズ(FF 3.6以降でテスト済み)は約200Mbです。ログアウトするたびに、ブラウザのLocalStorageをクリアしますが、アプリケーションストレージからリソースをクリアするにはどうすればよいですか?

4

2 に答える 2

7

アプリケーションキャッシュが非常に多くのスペースを占有することの問題は、ユーザーエージェントに毎回異なるオフラインWebアプリケーションを提供していることです。オフラインのWebアプリケーションは、キャッシュマニフェストファイルのURIによってユーザーエージェントに識別されます。これには、クエリ文字列が含まれます。ご想像のとおり、マスターファイルのURIではありません。

したがって、キャッシュマニフェストURIにセッションIDを含めることで、以前にダウンロードしたアプリケーションを使用せずに、各セッションが独自の新しいアプリケーションを取得することをブラウザーに通知します(したがって、それらをクリアすることはできません)。毎回異なるWebアプリケーションをインストールしています。

現在HTML5オフラインキャッシュマニフェストを使用しても価値がないため、アプリケーションをどのように設計しているかを再検討してください。過剰なダウンロードが発生するだけです。Webアプリケーションが推奨するアーキテクチャは、すべてのHTMLを静的に提供し、AJAXを介したセッションを必要とするデータをフェッチすることです。従来の「サーバー上のデータを使用してHTMLページを動的に生成する」パラダイムに組み込まれている場合、Webアプリケーションは機能しません。

于 2011-04-29T12:57:49.633 に答える
0

JavaScriptからアプリケーションキャッシュを制御できるかどうかはわかりません。これは、キャッシュをクリアするときにブラウザとユーザーが処理する必要があるものです。

于 2011-04-29T07:46:56.143 に答える