ASP.Net MVC 如何修复 expiration not specified 问题
🏷️ .NET MVC
使用 GTmetrix 测试网站加载速度使发现静态文件都显示 expiration not specified 的提示。
建议里只有 Apache Server 通过配置 .htaccess 文件设置过期时间的方法,ASP.Net MVC 中呢则是需要修改 Web.config 文件。
xml
<system.webServer>
<staticContent>
<clientCache cacheControlCustom="private" cacheControlMode="UseMaxAge" cacheControlMaxAge="10.00:00:00" />
</staticContent>
</system.webServer>
cacheControlCustom 属性的值可以参考 Cache-Control。
常用的有下面三个:
- no-cache :不被任何容器缓存
- private :不被代理服务器缓存,但可以被客户端缓存
- public :可以被任意容器缓存
cacheControlMode 属性有 4 个选项:
- NoControl :不添加
Cache-Control
或Expires
到 Response Headers - DisableCache :添加
Cache-Control: no-cache
到 Response Headers - UseMaxAge :添加
Cache-Control: max-age=<nnn>
到 Response Headers - UseExpires :添加
Expires: <date>
到 Response Headers
cacheControlMaxAge 属性会设置 max-age 参数到 Cache-Control,其优先级高于 Expires 。
上面示例中设置的 10 天有效期,将添加 max-age=864000 到 Response Headers 的 Cache-Control 属性。
httpExpires 指定固定的过期时间。使用该参数需要将 cacheControlMode 设置为 UseExpires 。
该属性会添加一个 Expires 属性到 Response Headers 中。
值的格式必须符合 RFC 1123 规范,具体格式参考 RFC 822 - 5. DATE AND TIME SPECIFICATION。
示例: Fri, 01 Jan 2010 12:00:00 GMT