当缓存中没有缓存清单时,Chrome会从缓存中提供资源

时间:2012-04-20 16:05:32

标签: html5 cache-manifest

我正在玩HTML 5缓存清单,我在Chrome中看到一个非常奇怪的问题。这是页面的标题:

<html id="html" xmlns="http://www.w3.org/1999/xhtml" manifest="Portal/CacheManifestHandler.ashx">

以下是fiddler捕获的清单内容:

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

我在页面标题内部有一个特定的脚本,它是在服务器上动态生成的。以下是用户首次访问该页面时为该脚本标记返回的内容:

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会从cache-manifest加载页面,这没关系。 然而令人惊讶的是它加载了&lt; script&gt;也来自缓存。我可以验证它,因为我的服务器断点没有被击中,Fiddler也没有显示对此&lt; script&gt;的请求。网络没有关闭且服务器可以访问(这不应该有所不同,因为要求Chrome不要缓存此&lt; script&gt;无论如何)。

这是预期的行为吗? Chrome不应该请求&lt; script&gt;再次从服务器,即使它的包含页面是从清单缓存加载。

Chrome的chrome:// appcache-internals在缓存中也只显示2个网址,这也很好,为什么然后加载&lt; script&gt;从缓存而不是服务器 Chrome's chrome://appcache-internals also shows only 2 urls in the cache which again is fine, why then it loads the <script> from cache and not the server

1 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题,我们的解决方案是在app.manifest的网络部分粘贴*,以便我们的网络部分看起来像

NETWORK: *

我现在正在挖掘,看看这是否真的是“按设计”适用于Google,或者只是错误。