【发布时间】:2016-09-06 04:56:53
【问题描述】:
我正在尝试更新影响静态资源(js、css、图像)的浏览器缓存设置的配置。
我在 CMS 中上传了 Sitecore CMS 站点和图像,这些图像缓存在浏览器中(状态代码 = 200(来自缓存),当我在 Chrome 浏览器中观察网络时),但我的其他资源(如 js 和 css)提供来自Website文件夹的没有缓存在浏览器中,状态码是304(这是服务器缓存,需要往返来检查任何更新。)
我在 web.config 文件中有以下配置设置:
<caching>
<profiles>
<add extension=".jpeg" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".js" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".png" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".css" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".json" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
</profiles>
</caching>
<staticContent>
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".json" mimeType="application/json" />
<mimeMap fileExtension=".woff2" mimeType="application/x-font-woff2" />
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>
现在,如果我删除缓存配置文件条目,则资源将缓存在浏览器中,我可以看到所有 css、js 状态代码为 200(来自缓存),用于后续请求。
我的问题是,这里有什么区别,为什么即使添加了 staticContent 设置,浏览器缓存也不起作用。如果我删除现有的 caching-profiles 设置会有什么影响(会影响服务器缓存吗?)。
我看到了其他一些 links,它解释了静态缓存设置,但我想知道我所做的更改的影响(删除了缓存配置文件)
请告诉我您的意见。
以下是响应标头详细信息: 使用缓存配置文件:
没有缓存配置文件:
【问题讨论】:
-
您的浏览器应该遵循每个资源的
Cache-Control响应 HTTP 标头。您应该检查在浏览器中看到的 HTTP 响应中此标头的值是什么。在我看来<caching>可能会覆盖您的客户端缓存的<staticContent>设置,并且检查响应标头(而不是请求标头)中的Cache-ControlHTTP 标头应该可以证明这一点。 -
感谢 Frederic 的输入,我通过添加标题响应更新了问题。使用缓存配置文件,标头响应显示无缓存,当我删除缓存配置文件时,它能够缓存。正如你所说的缓存可能会覆盖静态内容,但没有找到原因,也在检查影响。
标签: asp.net-mvc web-config sitecore iis-7.5 sitecore7.2