我用YSlow测试了一个 ASP.NET 的MVC网站,我得到了错误:
为以下项目添加到期标头:
(no expires) http://www.mydomain.pt/assets/logo.png
(no expires) http://www.mydomain.pt/favicon-196x196.png
(2013/12/30) http://www.mydomain.pt/file/e6fb9d2a-668b-423a-9120-0b34228f296c
奇怪的是,我解决了这些问题。对于静态,我使用了:
纠正
<system.webServer>
<clientCache setEtag="false" cacheControlMode="UseMaxAge" cacheControlMaxAge="60.00:00:00" />
</system.webServer>
对于由操作返回的文件,我有:
[Route("file/{identifier:guid}"), HttpGet, OutputCache(Duration = 1200, Location = OutputCacheLocation.Client, VaryByParam = "identifier")]
public virtual ActionResult Get(Guid identifier, String n = null) {
}
有谁知道为什么我仍然没有这些项目的缓存?
我错过了什么吗?
谢谢米格尔
使用以下
语法:
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="60.00:00:00" />
</staticContent>
</system.webserver>
压缩静态文件与过期标头没有任何关系。压缩与GZip有关。
.png文件没有您在操作方法中设置的到期标头的原因是 MVC 未用于提供静态文件,因此它不会设置标头。
向映像添加过期标头