代码之家  ›  专栏  ›  技术社区  ›  Clayton

如何使用css文件的subversion版本来防止浏览器缓存

  •  1
  • Clayton  · 技术社区  · 16 年前

    StackOverflow的实现方式如下:

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

    每次引用文件更改时,链接标记的href属性都会在HTML代码中更新,从而支持缓存和更新引用文件。

    我的问题 -如何检索要包含在链接中的css文件的subversion版本?只有在Subversion文件的修订版中才能显示您当前的关键字。

    我正在使用PHP/CodeIgniter+jQuery。

    3 回复  |  直到 16 年前
        1
  •  2
  •   nobody    16 年前

    all.css 是一个静态文件。

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

    这在广告网络中也很常用,在广告网络中,点击率是根据图形下载的次数来计算的,浏览器缓存会与视图的真实值发生冲突。

        2
  •  0
  •   Vidar Vestnes    16 年前

    使用所谓的svn提交钩子。抱歉,我不知道细节,但希望你可以通过谷歌搜索找到。

    顺便提一下可以将文件的时间戳用作cachebuster

    index.php?p=blabla&v=".filemtime('mystyle.css') 
    
        3
  •  0
  •   Sripathi Krishnan    16 年前

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

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

    这种方法的优点是,该版本将 只有 当资源实际发生变化时进行更改。因此,您可以设置积极的缓存头——本质上是告诉浏览器永远缓存资源。

    推荐文章