Kei*_*ith 5 asp.net asp.net-mvc iis-7 caching http
我有一个动态生成的CSS文件.它相当大,并且针对不同的浏览器具有不同的内容.它很少变化.
所以在.aspx页面顶部我有:
<%@ OutputCache Duration="86400"
Location="ServerAndClient"
VaryByParam="none"
VaryByCustom="browser" %>
Run Code Online (Sandbox Code Playgroud)
我对生成动态图像的MVC操作有类似的指令:
[OutputCache(Duration = 86400,
VaryByParam = "none",
Location = OutputCacheLocation.ServerAndClient)]
Run Code Online (Sandbox Code Playgroud)
这应该导致文件缓存在服务器和客户端(但不是中间代理)一天.
响应标头似乎是正确的:
HTTP/1.1 200 OK
Cache-Control: private, max-age=83831
Content-Type: text/css; charset=utf-8
Expires: Wed, 09 Jun 2010 08:52:45 GMT
Last-Modified: Tue, 08 Jun 2010 08:52:45 GMT
Vary: *
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Tue, 08 Jun 2010 09:35:34 GMT
Content-Length: 70073
Run Code Online (Sandbox Code Playgroud)
服务器端缓存工作 - 进一步的请求不再执行代码.
然而,客户端缓存以两种不同的方式被破坏:首先,在每个页面上再次请求内容,尽管它应该被缓存.
为什么浏览器会再次请求内容?
其次,当再次向服务器询问内容时,它返回HTTP 200以及整个内容.它应该返回没有正文的HTTP 304 Not Modified - 告诉浏览器重新使用它已经下载的内容.
当内容未更改时,如何确保它返回HTTP 304?
1)变化:*会导致某些浏览器(如IE)无法缓存.变化:用户代理可能会更好(不确定).
2)WRT 200 vs 304:客户端是否发送了If-*标头?
| 归档时间: |
|
| 查看次数: |
1150 次 |
| 最近记录: |