2

我可以看到stackoverflow添加了他们ExpiresCache-Control 图片、css、js等,所以我也在尝试做同样的事情,我试过这篇文章

网络配置

<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 -

Internal Server Error 无法访问请求的页面,因为该页面的相关配置数据无效。

Module           CustomErrorModule
Notification     SendResponse
Handler          StaticFile
Error Code       0x8007000d

已定义配置错误配置元素“clientCache”

我知道clientCache已经定义了,但我很担心,想知道如何在响应标头中设置 Cache-Control 和 Expires ?

任何帮助都会很棒。

更新:

正如@Vitaly Kulikov 在评论中回答和讨论的那样,使用这篇文章和这篇文章我得出的结论是,在 IIS 中,我们可以Expires and Cache-Control在 web.config 中进行设置,因此我计划使用OutputCache至少为图像设置 Expires,它适用于0.9毫秒延迟。希望能帮助某人。

4

1 回答 1

3

根据规范,您不可能同时拥有它们。但是你没有理由这样做,你对他们中的任何一个都很好。

规格

如果您查看 Chrome 源代码,浏览器中的缓存有几个简单的规则

第一的:

max-age 指令优先于 Expires,因此如果响应中存在 max-age,则计算很简单:freshness_lifetime = max_age_value

第二:

否则,如果响应中存在 Expires,则计算为:freshness_lifetime = expires_value - date_value

第三:

如果我们错过了前面的步骤和“缓存控制”!=“必须重新验证”,那么浏览器还有一个缓存规则:它缓存资源自上次修改资源日期以来经过的时间的 10%。

就是这样,没有更多的规则。

于 2016-03-16T06:18:35.767 回答