1

キャッシュ マニフェストを使用するオフライン対応の Web サイトがあります。「Empty Cache and Hard Reload」を実行しても、Chrome で古いバージョンのスタイルシートが提供されていることがわかりました。

ページまたは CSS の URL に ?foo=bar を追加すると、新しいバージョンの CSS が配信されます。

私のマニフェストは /Manifest/Index で動的に生成されます (例)

Chrome でページを開いて Fiddler を確認すると、予想どおり、Web サーバーに対して 1 つの要求が行われていることがわかります。

#   Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
6   200 HTTP    10.6.4.67   /Manifest/Index 2,476   no-cache  Expires: -1   text/cache-manifest; charset=utf-8  chrome:5484         

/Manifest/Index のヘッダーの詳細は次のとおりです。

GET /Manifest/Index HTTP/1.1
Host: 10.6.4.67
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) 
Chrome/23.0.1271.97 Safari/537.11
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP/1.1 200 OK
Date: Thu, 10 Jan 2013 17:59:42 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 4.0
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: text/cache-manifest; charset=utf-8
Content-Length: 2476

CSSにキャッシュバスティングクエリ文字列変数を追加しない限り、このキャッシュマニフェストのCSSファイル参照が更新されない理由を誰か教えてもらえますか? 特にChromeのキャッシュを空にしても??!

より詳しい情報:

キャッシュ マニフェストを更新すると、Chrome のコンソールを開いて、App Cache イベントが発生するのを確認できます。

ドキュメントは、マニフェスト /Manifest/Index を使用してアプリケーション キャッシュから読み込まれました

アプリケーション キャッシュ チェック イベント

アプリケーション キャッシュのダウンロード イベント

Application Cache Progress イベント (0/61) http://xxxx/Content/themes/base/jquery.ui.progressbar.css

Application Cache Progress イベント (1/61) http://xxxx/Content/themes/base/jquery.ui.accordion.css

をちょきちょきと切る

Application Cache Progress イベント (54/61) http://xxxx/Content/Site.css

このリストの一部の項目 (Site.css など) に下線が付いていることに気付きました。何故ですか?

ありがとう、

クリス

4

1 に答える 1

0

chrome://appcache-internals/ を使用して Chrome の appcache をクリアし、そこで削除します。

また、新しいコピーをダウンロードするために、マニフェスト ファイルに含まれるファイルを変更するたびに、マニフェスト ファイルを再構築する必要があります。

これは、マニフェストで乱数を使用し、ファイルの編集時に乱数を生成することによって実現されます。

たとえば、node.js

function generateCacheManifest(...) {
    manifest = 'CACHE MANIFEST';
    manifest += '#version ' + Math.random();
    ...
}

はい、乱数はコメントに含めることができます。ポイントは、Chrome がキャッシュ マニフェストをチェックし、何も変更されていないことを確認すると、更新されたファイルをフェッチしないことです。

ファイルを変更し、マニフェストを変更するのはとても簡単です。

于 2013-02-05T04:56:05.287 に答える