【问题标题】:IIS CSS CachingIIS CSS 缓存
【发布时间】:2010-09-12 04:01:52
【问题描述】:

当我们在新代码提交后开发新站点或测试涉及 css 的新站点的更改时,有人去检查更改时,他们总是会看到旧 css 的缓存版本。这在测试中引起了很多问题,因为人们永远不确定屏幕上是否有最新的 css(我知道 shift 和单击刷新会清除此缓存,但我不能指望最终用户知道这样做)。我有哪些可能的解决方案?

【问题讨论】:

    标签: css iis iis-6


    【解决方案1】:

    在您的开发环境中,将 Expires 标头设置得更低。在您的生产环境中,将其设置得较高,然后在发布前一周左右将其设置为较低。

    【讨论】:

      【解决方案2】:

      如果您从静态文件(或与查询字符串无关的任何内容)提供 CSS,请尝试改变它以确保浏览器发出新的请求,因为它会认为它正在拉一个完全不同的资源,例如:

      "styles.css?token=1234" 在您的标记中的 CSS 参考中,并在每次 CSS 签入时更改 "token" 的值

      【讨论】:

      • 我已经使用静态方法将 css 添加到页面,所以我在查询字符串中添加了构建的时间戳,非常感谢。
      • 虽然这个解决方案可以工作,但对于可能有数百个 .css 和 .js 文件引用的大型网站来说是完全不切实际的。
      • @user357320,我请您参考此页面的第 21 和 22 行,根据某些定义,该页面是“大型网站”。幸运的是,这是一个结构良好且设计良好的网站,因此没有数百个参考资料可供抗衡。
      • @Karlth 任何网站,尤其是大型网站都应该使用 css 和 js 捆绑,并且大多数库都将时间戳/版本/哈希生成到 url,因此不必修改数百个 css 链接.
      • @user3285954 “任何网站都应该”说起来容易做起来难!
      【解决方案3】:

      这不是一个很好的解决方案,但我之前在页面级别通过在对 CSS 文件的调用末尾添加一个查询字符串来解决这个问题:

       <link href="/css/global.css?id=3939" type="text/css" rel="stylesheet" />
      

      然后我会随机化 id 值,以便它在页面加载时始终加载不同的值。然后我会在投入生产之前取出这段代码。我想您也可以从配置文件中提取值,这样每次提交只需加载一次。

      【讨论】:

        【解决方案4】:

        针对此问题的 JavaScript 版本给出的类似(更详细一点)答案,具有相同的问题/解决方案

        Help with aggressive JavaScript caching

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多