3

私はしばらくの間自分のWebサイトでHTML5オフラインキャッシュを使用してきましたが、何らかの理由でそれをオフにすることを検討しています。驚いたことに、それは機能しません。

これが私がHTML5オフラインキャッシングを実装した方法です。

私のindex.html中で私はマニフェストファイルへのパスを与えます

<html manifest="app.manifest">

app.manifestファイルに、オフラインで使用するためにブラウザーでキャッシュしたいすべてのjs / css/pngファイルをリストします。更新をデプロイするたびに、app.manifestファイルを更新します。これにより、ブラウザーはマニフェストファイルにリストされているすべてのファイルの最新バージョンをフェッチします。

オフラインキャッシュをオフにするために、index.htmlの開始タグを次のように変更しました。

<html>

app.manifestファイルにダミーの変更を加えたので、ブラウザー(既に私のWebサイトをキャッシュしている)が変更を検出し、すべてのファイル(index.htmlを含む)の最新バージョンをダウンロードします。

私が気付いたのは、ブラウザは実際にすべてのファイルの最新バージョンを取得しているということです。マニフェスト宣言のない更新されたバージョンに新しい<html>タグが表示されますが、将来の変更に対するブラウザーの動作は変更されません。つまり、サーバーで変更されたときに、ブラウザがindex.htmlファイルの新しいバージョンをすぐにフェッチすることを期待しています。しかし、それは起こりません。マニフェストファイルに変更を加えるまで、ブラウザは更新されたindex.htmlをダウンロードしません。

したがって、ブラウザはapp.manifestファイルを私のWebサイトのURLに永続的に関連付けており、<html>タグに記載していなくても削除されないように見えます。

私はこれをGoogleChromeとFirefoxの両方でテストしましたが、同じ結果です。Chromeも再起動してみましたが、私のサイトでapp.manifestが定義されていることを忘れないでください。Webでのオフラインキャッシングのこの側面に関する議論は見つかりませんでした。

更新:すべてのブラウジングデータをクリアすることで(設定に移動して)、Chromeの動作を取り除くことができました。しかし、それは私がユーザーに指示できることではありません。

4

1 に答える 1

8

マニフェストURLが404を返すようにして、オフラインWebアプリケーションが不要であることを示します。HTML5§5.6.4のステップ5によると、これはキャッシュを廃止としてマークし、それを削除します。

に移動して、ChromeでオフラインWebアプリケーションを手動で削除することもできますabout:appcache-internals

于 2011-09-29T12:49:37.610 に答える