我可以看到stackoverflow为他们的图片,css,js等添加Expires
和Cache-Control
,所以我也尝试这样做,我试过this文章
的web.config
<location path="Content">
<system.webServer>
<staticContent>
<clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge"
cacheControlMaxAge="365.00:00:00" />
<clientCache cacheControlMode="UseExpires" httpExpires="Mon, 01 May 2023 00:00:00 GMT" />
</staticContent>
</system.webServer>
</location>
当我尝试在内容文件夹中访问css文件时:http://localhost:11111/Content/bootstrap.min.css
我收到以下错误
错误:
HTTP错误500.19 -
内部服务器错误由于页面的相关配置数据,无法访问请求的页面 无效。
Module CustomErrorModule Notification SendResponse Handler StaticFile Error Code 0x8007000d
配置错误配置元素'clientCache'已定义
我知道clientCache
已经定义了,但是我很关心并想知道如何在响应标头中设置Cache-Control和Expires?
任何帮助都会很棒。
更新
正如@Vitaly Kulikov在评论中回答并讨论并使用this和this帖子我得出结论,在IIS中我们可以在web.config中设置Expires and Cache-Control
,所以我有计划至少使用OutputCache为图片设置过期,并且它与0.9 milliseconds延迟一起使用。希望帮助某人。
答案 0 :(得分:3)
根据规范,你无法同时拥有它们。但是你没有理由这样做,你对任何人都没问题。
如果你查看Chrome源code,浏览器中的缓存有几个简单的规则
首先:
max-age指令优先于Expires,因此如果存在max-age 在响应中,计算简单:fresh_lifetime = max_age_value
第二
否则,如果响应中存在Expires,则计算结果为:fresh_lifetime = expires_value - date_value
第三
如果我们错过了之前的步骤和&#34;缓存控制&#34; !=&#34;必须重新验证&#34;,然后浏览器还有一个缓存规则:它将资源缓存自资源的上次修改日期以来10%的时间。
那就是它,没有更多的规则。