HTML 5 キャッシュ マニフェストをいじっていると、Chrome で非常に奇妙な問題が発生します。ページのヘッダーは次のとおりです。
<html id="html" xmlns="http://www.w3.org/1999/xhtml" manifest="Portal/CacheManifestHandler.ashx">
フィドラーからキャプチャされたマニフェストの内容は次のとおりです。
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/cache-manifest; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 20 Apr 2012 15:56:20 GMT
Content-Length: 56
CACHE MANIFEST
NETWORK:
*
#Timestamp: 634705337615835020
サーバー上で動的に生成されるタグ内のページのヘッダーに特定のスクリプトが 1 つあります。ユーザーが最初にページにアクセスしたときにそのスクリプト タグに対して返されるコンテンツは次のとおりです。
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/javascript; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 20 Apr 2012 15:36:33 GMT
Content-Length: 74
document.location='/Portal/Login.aspx?ReturnUrl=%2fPortal%2fDefault.aspx';
スクリプトが Cache-manifest にあることも、そのヘッダーがブラウザー (Chrome) にスクリプトをキャッシュすることを許可していないこともわかりません。その後ブラウザで同じページを開くと、Chrome はキャッシュ マニフェストからページをロードしますが、これは問題ありません。しかし驚くべきことに、キャッシュからも <script> をロードします。サーバーのブレークポイントがヒットしていないこと、および Fiddler がこの <script> の要求を表示していないことを確認できます。ネットワークはダウンしておらず、サーバーにアクセスできます (Chrome はこの <script> をキャッシュしないように求められたため、違いはありませんでした)。
これは予想される動作ですか?<script> を含むページがマニフェスト キャッシュから読み込まれた場合でも、Chrome はサーバーから再度 <script> を要求すべきではありませんでした。
Chrome の chrome://appcache-internals もキャッシュ内に 2 つの URL しか表示されませんが、これも問題ありません。サーバーではなくキャッシュから <script> をロードするのはなぜですか