【问题标题】:Force CSS Recache强制 CSS 重新缓存
【发布时间】:2009-06-24 20:47:46
【问题描述】:

如果用户对旧文件进行操作,是否有任何方法可以确定或强制重新缓存 CSS 文件?

【问题讨论】:

    标签: css stylesheet


    【解决方案1】:

    确保每个人都重新加载您的新文件的唯一可靠方法是更改​​其 URL。在不实际重命名的情况下执行此操作的合理方法是添加随机字符串:

    <link rel='stylesheet' href='/mystyles.css?random=87365835'>
    

    这是使用大锤来破解坚果,并绕过所有现有的 HTTP 机制来做到这一点,但它绝对可以在任何地方工作,而其他技术都有警告。

    编辑: @jitter:您不必为每个请求自动更改 URL - 您可以根据 CSS 文件的时间戳来更改它,或者甚至在您使用时手动更改它想要确保 CSS 被重新加载。

    【讨论】:

    • 但这会给您的服务器带来沉重的负载,因为现在客户端每次都加载 css,因为 ?random=xxx 始终是不同的。因为浏览器不应该缓存带有变量的 url(尽管 IE 和 FF 可以)
    • 嗯,这不应该工作。浏览器理解 URL,不应缓存 ?asdasd=adssad 部分。
    • @jitter: 如果我有 /viewCustomer?custId=1 和 /viewCustomer?custId=2 我当然不希望浏览器将这两个 URL 视为同一个页面并只缓存一个副本其中。您的提议意味着,如果我访问 /viewCustomers?custId=1,我最终可能会得到 /viewCustomers?custId=9 的缓存副本,因为它比 custId=1 的副本更新。 AFAIK 浏览器总是(并且希望总是)将每个完整的唯一 URL(包括查询字符串)视为要缓存的唯一资源(忽略任何其他缓存指令和特定浏览器的缓存策略)。
    【解决方案2】:

    您可以尝试编辑服务器 etags: http://developer.yahoo.com/performance/rules.html#etags

    但首选方法可能是重命名您的 CSS 文件,例如使用日期或内部版本号,以便用户始终拥有最新的。

    【讨论】:

      【解决方案3】:

      检查此解决方案而不是使用 xx.css?rand=213213213

      What is an elegant way to force browsers to reload cached CSS/JS files?

      或谷歌“自动版本控制”加上添加 javascript 或 css。或“自动资产版本控制”

      它使用一种自动方法,通过附加 get 变量来更改 URL 部分的路径。

      【讨论】:

        猜你喜欢
        • 2011-04-21
        • 2010-09-24
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 2015-03-04
        • 2014-07-11
        • 1970-01-01
        相关资源
        最近更新 更多