2011-09-02 52 views
-2
<link rel="/style/style.css"/> 

所以这是我的index.html。如果我使用git,我该如何实现缓存拦截器?

如果我保存它,我想自动执行的style.css?版本= 3 ......所以这个萧条缓存

什么是做到这一点的最简单的方法?

+3

git在哪里适合? – tpower

+1

javascript在哪里适合? –

+1

模板适合哪里? –

回答

-7

使用JavaScript,你可以只写

<script type="text/javascript"> 
    document.write('<link rel="stylesheet" type="text/css" href="style.css?version=' + (new Date()).getTime() + '">'); 
</script> 

,如果你使用任何服务器端脚本可以更容易完成。类似于`

<link href="/style/style.css?version=<?php echo time() ?>">` 
+7

这将强制更新每个请求。理想情况下,只有在文件发生变化时缓存拦截器才会生效,这就是为什么用户要求使用git修订标签(这是我寻找的)。不过,如果您确实需要重新加载每个请求,请不要随意使用,这样做毫无意义。更好的选择是使用时间,因为它总会不同。随机可以产生重复,即使不太可能,但仍然使用时间要简单得多。在JavaScript中,这是'(new Date())。getTime()'和简单的'time()'在PHP中。 – six8

4

如果您使用git,则可以使用git describe --tags --always获取当前版本。

如果在PHP中,你可以这样做:

$currentVersion = `git describe --tags --always` 

的然后我们$ CURRENTVERSION缓存阻止宏:

<link href="/style/style.css?version=<?=$currentVersion?>"> 

当然:

  • 应该缓存命令的结果,至少一分钟,以防止对git com的密集调用mand!
  • 确保该命令在GIT目录推出

它将工作,即使在你不使用标签(感谢--always开关),但它是更好的使用它们,所以$ CURRENTVERSION会像v2.1.3-c1a2f3e