加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么我的aspx页面没有被缓存在客户端上?

发布时间:2020-12-16 06:57:29 所属栏目:asp.Net 来源:网络整理
导读:我有一个动态生成的CSS文件.它相当大,并且针对不同的浏览器具有不同的内容.它很少变化. 所以在.aspx页面的顶部我有: %@ OutputCache Duration="86400" Location="ServerAndClient" VaryByParam="none" VaryByCustom="browser" % 我对生成动态图像的MVC操作
我有一个动态生成的CSS文件.它相当大,并且针对不同的浏览器具有不同的内容.它很少变化.

所以在.aspx页面的顶部我有:

<%@ OutputCache Duration="86400" 
                Location="ServerAndClient" 
                VaryByParam="none" 
                VaryByCustom="browser" %>

我对生成动态图像的MVC操作有类似的指令:

[OutputCache(Duration = 86400,VaryByParam = "none",Location = OutputCacheLocation.ServerAndClient)]

这应该导致文件缓存在服务器和客户端(但不是中间代理)一天.

响应标头似乎是正确的:

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

服务器端缓存工作 – 进一步的请求不再执行代码.

然而,客户端缓存以两种不同的方式被破坏:首先,在每个页面上再次请求内容,尽管它应该被缓存.

为什么浏览器会再次请求内容?

其次,当再次向服务器询问内容时,它返回HTTP 200以及整个内容.它应该返回没有正文的HTTP 304 Not Modified – 告诉浏览器重新使用它已经下载的内容.

当内容未更改时,如何确保它返回HTTP 304?

解决方法

1)变化:*会导致某些浏览器(如IE)无法缓存.变化:用户代理可能会更好(不确定).

2)WRT 200 vs 304:客户端是否发送了If- *标头?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读