2011-07-31 13 views
1

私はiPhoneのweb-appを持っており、キャッシュの更新を強制する方法を知りたい。HTML5キャッシュ(マニフェスト)を完全に無効にしますか?

CACHE MANIFEST 
index.html 
file1.css 
file1.js 

index.htmlは、アプリケーションの肉であるので、私はキャッシュに入れていること:

マイキャッシュマニフェストはこれです。この時点で、私はiPhoneにキャッシュを無効にする方法を理解できないので、私は骨が折れているようです。 Settings > Safari > Clear Cacheに行くことさえできませんが、私はプログラム的にこれを制御できるようにしたいと思います。マニフェストからindex.htmlを削除して再度追加するとうまくいくように思えますが、すべてのクライアントが更新されたマニフェストにクリーンなヒットをしていることがわかります。

index.htmlをキャッシュするにはどうしたらいいですか?

答えて

3

私の頭の上には、マニフェストを変更するとそのトリックが行われ、マニフェストに#で始まるコメントが含まれることがあります。ただランダムなコメントを追加すればうまくいくはずです。

gitリポジトリのHTML5アプリケーションで作業していたときに、コミット後にHEADハッシュを含むコメントを自動的に再生成して、変更が常にユーザーに伝わるようにしました。

+0

私のアプリケーションは簡単ですが、私はちょうど 'gitのログを追加するためのスクリプトを書くことができ--oneline |カット-c -7 | head -1 'をマニフェストの先頭にコメントとして追加します。それは悪い考えではありません。 –

+0

コミットハッシュを取得するには、 'git log -1 --format ="%h "' –

1

は、マニフェスト変更に関するウェブサイトをリロードするためにそれらを防止WebKitのブラウザのバグで、私は直接のindex.htmlを呼び出すとき以外は

this linkは、回避策について見当もつかない見るためにあるようです。

仕事をするために、ピンのiPad/iPhone-WebAppのためノーチャンス...

0

はい、あなたはキャッシュされたリソースファイルをリロードするのSafariを強制するためにJavaScriptを使用することができます。

Appleによると、キャッシュマニフェストファイルを変更すると、Safariは変更されたリソースファイルをリロードします。 しかし、これらのリロードされたファイルは、ユーザがサイトを2度訪れるまではブラウザによって使用されません。その遅れは、特に開発中に痛みを伴うことがあります。

すぐにキャッシュの内容をリロードするのSafariを強制するには、AppleがapplicationCacheオブジェクトを操作することができcan use this JavaScript言います:

function updateSite(event) { 
    window.applicationCache.swapCache(); 
} 
window.applicationCache.addEventListener('updateready', updateSite, false); 
関連する問題