2012-01-11 13 views
8

私はサイトにアプリケーションキャッシュをセットアップし、その直後に私が実現したより積極的な方法を実現しました。私はそれを削除したい。永久に。HTML5のAppcacheマニフェストを永久に削除する

変更されたマニフェストファイルを完全に空にして、適切なMIMETYPEでキャッシュを削除すると読んだことがあります。 編集:以下を参照してください。モーリスの答えは唯一の一貫した修正です。

これは最も速く、最も効果的なソリューションですか?より良い方法がありますか?

あなたが実際にこの機能を使用するかどうかを回答で指定することができれば、私は本当に感謝しています。あいまいなドキュメントとテスト中に表示されなかった風変わりなものが私をこのような状況に導いてくれます。

答えて

16

まず、HTMLページのマニフェストURLを無効なものに変更して、ブラウザにロード時に404が表示されるようにすることです。元のマニフェストも変更しないと、新しいHTMLページがダウンロードされません。ブラウザが新しいマニフェストURLのダウンロードに失敗した後、HTMLページからマニフェスト設定を完全に削除することができます。

しかし、それは既存のマニフェストリファレンスを削除する唯一の信頼できる方法と思われます。

+0

だから私は実際にはを設定したい、属性を削除しませんか? –

+1

まず、元のマニフェストを変更するか、ページがダウンロードされず、ページが更新されます。これによりマニフェストリンクが解除され、マニフェスト属性を完全に削除できます。 – Maurice

+0

助けてくれてありがとう。 –

2

アップデートが失敗した(つまり、最初から再構築できるようにappcacheを完全に削除する)強制終了後、appcacheをリセットする必要があったのと同じ問題が発生しています。

モーリスの答えに基づいて構築する非キャッシュページを開く非表示のリンクをユーザーに提示します。キャッシュされていないページを開くと、Cookieが書き込まれ、前のビューに戻ります。このCookieは、次回appcacheが要求されたときに404を返すようにサーバーに指示し、その後、ユーザーは通常のログイン処理を行います。アプリケーションが次に正常に実行されると、クッキーがクリアされ、通常どおりにキャッシュが再開されます。

このようにクッキーを使用すると、ビューのマスターバージョンがappcacheにスタックされているため、マニフェストに破損しているURLを挿入するのが難しい問題が発生します。つまり、マニフェストURLは同じですが、サーバーそうでないと言われるまで404で応答します。

+0

興味深い。あなたが最終的にappcacheを保持したい場合は、マニフェストを変更するだけで、ブラウザがすべてのアセットをあたかも開始したかのように再取得させることができます。 マニフェストを永久に削除するには、Mauriceが正しいとします。 –

+0

私の提案は本当にログインの後ろにあるアプリケーションのためのもので、正常な手順(マニフェストの変更など)を使って更新を成功させるのが難しい場合があります。 – notreadbyhumans

1

あなたの側から削除したい場合は、ブラウザから削除できます。私はChromeでそれを行う方法しか覚えていない。 chrome:// appcache-internals/&に移動して、必要なファイルを削除します。動作するはずのキャッシュ&クッキー&をクリアすることもできます。しかし、私はそれをChromeでテストしてきました。

すべての視聴者のために削除する場合は、キャッシュされた古いバージョンがあるかどうかを検出する方法はわかりませんが、Mauriceのように間違ったリンクで属性を保持することが唯一の方法私が知るだろう。しかし、別の方法があると確信しています。おそらくjQueryを使用しています。

5

2012年6月25日現在、404を返すとFirefox用の既存のappcacheがクリアされず、空のappcacheを返すとChrome用の既存のappcacheはクリアされません。次のappcacheを返すことは、IE、Chrome、Safari、Firefoxでうまくいくように思えましたが、どのようなメカニズムによってindex.htmlの「暗黙の」キャッシュが無効になっているかは不明です。

NETWORK: 
* 

CACHE: 
FALLBACK: 
+0

これは正しい答えとして受け入れられるべきです。これを共有してくれてありがとう! – raphael

+0

キャッシュ*は 'CACHE MANIFEST'で始まり、新しい行が仕様に準拠する必要があります。 index.htmlの暗黙のキャッシングを無効にすることについては、私が知っている唯一の解決策は、隠しiframeをインクルードし、iframeにマニフェストを宣言することです(iframe内のページはキャッシュされます)。私は実際にこれを試したことはありませんが、解決策としてそれを読んでいます。 – Nateowami

関連する問題