2010-12-29 31 views
7

マニフェストファイルでオフラインキャッシュを使用するHTML5アプリケーションがあります。キャッシュの更新をトリガーする唯一の方法は、サーバー上のマニフェストファイルの変更です。私はキャッシュを期限切れにし、更新を強制するプログラム的な方法を探しています。HTML5オフラインキャッシュプログラムの有効期限

キャッシュを期限切れにするwindow.applicationCacheのメソッドを探していましたが、しかし、何も見つかりませんでした。 update()メソッドがありますが、キャッシュが期限切れになった場合(つまり、マニフェストファイルに変更がある場合)にのみ更新されます。それは役に立たない。

アプリケーションキャッシュを期限切れにしてダウンロードを強制するプログラム的な方法を知っている人は誰ですか?

+0

* server-side *は、古いマニフェストファイルの '404'をサーバーすることです。マニフェストの古いバージョンを期限切れにするには、バージョン文字列を含むマニフェストファイル名を使用する必要があります。 – meagar

答えて

2

AFAIKでは、manifestが更新を開始する唯一の手段です。 HTML5 RocksのWebサイトには、の状態をappCache.statusでリッスンした後、すぐにapplicationCache.swapCache()を呼び出して、プログラムでキャッシュを更新する記事(manifestの更新後)について説明している記事があります。

は、私はそれで十分だろうかどうかわからないんだけど、その優れた読み取りが(「キャッシュの更新」までスクロール) - http://www.html5rocks.com/tutorials/appcache/beginner/

2

それは更新が唯一の「更新」マニフェストによってトリガーされることは事実ですファイル。しかし、一部のブラウザ(FF、chrome)はマニフェストファイルで参照されるすべてのファイルをチェックしません。たとえば、jpg'sは、サーバーが新しいものかどうかをテストしません。ブラウザの一般的なキャッシュポリシーが更新プロセスに影響するようです。ブラウザがキャッシュマニフェスト内のファイルのすべてまたは一部をチェックするようにするには、このファイルにHTTPヘッダの "Cache-Control:no-cache"タグを付けなければなりません。

Cookieを使用して更新操作を制御できます。あなたがcookieコマンドを解釈するserversideスクリプトを持っているなら、javascriptを介してブラウザに古くなったキャッシュの内容を強制することができます。 たとえば、クライアントがcookie "cache_clear"を設定したcache.update()を実行すると、サーバーは応答コード404で応答し、ブラウザはアプリケーションキャッシュの内容を失効させます。