如何使用css文件的subversion修订版来阻止浏览器缓存

时间:2010-03-30 18:24:03

标签: php svn caching

StackOverflow像这样实现它:

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

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

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

我正在使用PHP / CodeIgniter + jQuery。

3 个答案:

答案 0 :(得分:2)

all.css是一个静态文件。

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

这也常用于广告网络中,根据图片下载次数计算“点击次数”,浏览器缓存会隐藏视图的真实值。

答案 1 :(得分:0)

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

顺便说一下......你可以使用文件的时间戳作为cachebuster

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

答案 2 :(得分:0)

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

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

这种方法的优点是,当资源实际发生变化时,版本会发生变化。因此,您可以设置积极的缓存标头 - 实质上是告诉浏览器永远缓存资源。