我已阅读此http://madskristensen.net/post/add-expires-header-for-images和https://technet.microsoft.com/en-us/library/cc770661.aspx以及其他类似文章,他们建议将此内容
<staticContent>
<clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
但即使在那之后,图像也没有从缓存中获取并且发送了200 ok响应,这就是对服务器的请求。我想要x小时/天没有要求,因为这些图像很长时间都不会改变。
我该怎么做?
答案 0 :(得分:5)
以下配置应使浏览器将图像缓存一整年:
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="public" />
</customHeaders>
</httpProtocol>
您只需确保将图像作为静态文件类型提供。没有办法强迫浏览器不向服务器发送请求,即;用户表现得很难。
您可以将上述配置包装在位置节点中,以便仅影响某个路径中的站点图像:
<location path="Content">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="public" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
上述配置将为http://www.example.com/Content/Images/ *
上托管的所有图像添加HTTP缓存头指令您应创建一个可配置的appsetting,它作为查询字符串参数传递给此类图像URI。这将允许您清除所有客户端以从服务器发送请求图像:(我们希望控制此缓存图像可能会有问题)
<img src="/Content/Images/MyImage.jpg?version=<%# Global.ImageVersion %>" />
有关缓存标头(缓存控制)的更多信息http://www.mobify.com/blog/beginners-guide-to-http-cache-headers/
我希望有所帮助!
答案 1 :(得分:0)
Asp.net Mvc页面Index.cshtml:
<div class="title">
<img src="../../Content/title.png?ver=@DateTime.Now.ToString("ssfff")">
</div>
输出主目录/索引:
<div class="title">
<img src="../../Content/title.png?ver=13388">
</div>
此页面每次都会刷新img src。