在我的 MVC3 项目中,我在一些控制器上设置了以下类级属性:
[OutputCache(Location = System.Web.UI.OutputCacheLocation.Server, Duration = 14400, VaryByParam = "*")]
持续时间 = 四个小时。
我使用VaryByParam = "*"
的是控制器的操作方法有不同的参数,而不是 VaryByParam = "none"
- 这是正确的用法吗?
在 IIS 中,在服务器级别和我网站的所有 web.config 文件中,我将静态缓存设置为八天。
观察 Fiddler 中的标题,当我转到搜索结果页面时,我看到以下内容:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 15 Aug 2013 17:21:32 GMT
Content-Length: 148842
对于我的站点脚本 js 文件:
HTTP/1.1 200 OK
Cache-Control: max-age=691200
Content-Type: application/x-javascript
Last-Modified: Thu, 15 Aug 2013 05:35:35 GMT
Accept-Ranges: bytes
ETag: "10906a447999ce1:0"
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Thu, 15 Aug 2013 17:21:32 GMT
Content-Length: 2999
对于CSS:
HTTP/1.1 304 Not Modified
Cache-Control: max-age=691200
Last-Modified: Wed, 07 Aug 2013 21:31:28 GMT
Accept-Ranges: bytes
ETag: "f08ce079b593ce1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Thu, 15 Aug 2013 17:21:33 GMT
使用 Google 的 PageSpeed 附属公司 ( http://www.webpagetest.org/ ),我的页面可以达到 90/100 左右 - 页面加载时间约为 4 秒,报告显示 0.47 秒优化 - 查看令人困惑的结果在这里。当我在原始与优化的 WebPageTest 上播放视频时,我的原始在 2.5 秒内完成(并且速度指数较低)并在 4.7 秒内完成优化。
Google 的 PageSpeed Insights 建议优化 CSS 交付。我已经在异步提供 CSS。
当我在 AWS 上进行托管时,我将实例上的资源提升到他们最强大的服务器实例之一。页面加载时间与我的常规实例大致相同。
所以我对上面的第一个结果感到困惑: Cache-Control: no-cache 。我是否没有正确实现缓存,如果没有,我错过了什么?