【问题标题】:How do I use the subversion revision of a css file to prevent browser cache如何使用 css 文件的 subversion 版本来防止浏览器缓存
【发布时间】:2010-04-14 06:07:59
【问题描述】:

StackOverflow 是这样实现的:

 <link rel="stylesheet" href="http://sstatic.net/so/all.css?v=4542">

每次引用文件发生变化时,HTML代码中link标签的href属性都会更新,从而支持缓存和更新引用文件。

我的问题 - 您如何检索该 css 文件的颠覆版本以包含在链接中? Subversion 关键字只告诉您当前所在文件的修订版本。

我正在使用 PHP/CodeIgniter + jQuery。

【问题讨论】:

    标签: php svn caching


    【解决方案1】:

    all.css 是一个静态文件。

    每次更改文件时该参数都会递增,以确保浏览器不会错误地缓存它,因为http://sstatic.net/so/all.css?v=4542http://sstatic.net/so/all.css?v=400 被视为不同的文件。

    这也常用于广告网络中,其中“点击量”是根据下载图片的次数来计算的,而浏览器缓存会影响浏览量的真实值。

    【讨论】:

    • 对,但是如何以编程方式检索该值?
    • Jeff 说过,在运行构建脚本时,javascript 文件是通过 YUI 压缩器运行的。我的假设是在运行构建脚本时检查 js+css 文件是否与最后一个版本进行比较,以查看它们是否已更改,以及是否将“版本号”递增并存储在某种形式的常量文件中。跨度>
    【解决方案2】:

    使用所谓的 svn 提交挂钩。对不起,我没有得到详细信息,但希望你可以通过谷歌搜索找到这些。

    顺便说一句...您可以将文件的时间戳用作缓存拦截器

    index.php?p=blabla&v=".filemtime('mystyle.css') 
    

    【讨论】:

      【解决方案3】:

      运行命令svn info --xml /path/to/file,查看info/commit/revision。这是该特定文件更改时的最后一次修订。

      使用上述方法,您可以编写一个实用程序来创建 js/css/img 文件及其版本号之间的映射。然后可以将此映射加载到 php 中,并像 stackoverflow 一样作为查询字符串附加。

      这种方法的优点是版本将在资源实际更改时更改。因此,您可以设置激进的缓存标头 - 本质上是告诉浏览器永久缓存资源。

      【讨论】:

        猜你喜欢
        • 2017-02-06
        • 2013-02-09
        • 2010-10-25
        • 1970-01-01
        • 1970-01-01
        • 2019-01-02
        • 2020-11-03
        • 1970-01-01
        • 2023-03-21
        相关资源
        最近更新 更多