这只会让我生气。我无法弄清楚为什么我的页面中的所有资源每次都被请求。
E.g。我的site.css返回以下标题(使用fiddler):
HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Mon, 29 Nov 2010 17:36:21 GMT
X-AspNet-Version: 2.0.50727
Content-Length: 9093
Cache-Control: public, max-age=2592000
Expires: Wed, 29 Dec 2010 17:36:21 GMT
Last-Modified: Mon, 08 Nov 2010 17:20:16 GMT
Content-Type: text/css
Connection: Close
但是每次点击刷新我都会看到所有资源(css,js,images)被重新请求。我可以控制为任何和所有这些资源返回的标头,但我还没有想出来。
我甚至调试了我的ASP.NET应用程序,并且肯定会再次要求HttpModule获取资源。
有人可以告诉我该怎么做吗?
编辑:
好的,我从标题中删除了must-revalidate, proxy-revalidate
,这让我更接近我想要的位置,现在当我按下它时,它仍然会在我按下时请求我的css / js文件。
我还能做些什么来避免这种情况吗?
答案 0 :(得分:4)
以下链接可能对您有所帮助。
Differences in reload behavior between FF and IE
http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/
简而言之,您的缓存行为将取决于您使用的标头和浏览器。
您使用哪种浏览器进行测试?后退按钮的处理方式也不同。
Back Button (Browser Behavior)
最后,浏览器之间的f5 / ctrl f5细分,点击,移动点击等行为: What requests do browsers' "F5" and "Ctrl + F5" refreshes generate?
答案 1 :(得分:2)
如果您正在处理自己模块中的请求 - 这似乎是这种情况 - 并且请求包含If-Modified-Since
标头,您可以使用它来确定是否响应200并发送整个资源再次,或者只是发送304并跳过发送js / css / etc内容。
除此之外,期望浏览器在点击F5 / Refresh时重新查询资源。只是你可以跳过发送整个js / css / etc,如果一切正常,则返回304。 除此之外,@ Chris的答案涵盖了其他所有内容。
点击后会看到哪些请求标题?