你的位置:快乐忆站 \ 前端 \ 文章正文

给静态资源添加查询字符串

想这个标题都想了我很长时间了,不知道怎么写才合适,通俗的讲就是在css或js后面加上?t=xxxxxx或者直接加上?xxxxxx之类的查询字符串,当然,后面的xxxxx通常为文件的最后修改时间,比如本站的css加载http://xiaosong.org/content/templates/xiaosong/main.css?t=20110827113539,后面的就是css文件的最新修改时间,又比如淘宝网的css加载http://a.tbcdn.cn/??p/global/1.0/global-min.css?t=2011081120110301.css,后面的也是一串与时间有关的字符串,其实我就是学的淘宝的方式~

加上查询字符串的好处是修改查询字符串后即使静态文件(如css或js)未做任何修改,但是浏览器还是会去请求这个文件,而不是从缓存中去加载。我们在修改我们的静态文件(如修改css样式)后,我们总是希望访客下载到的是修改过的文件,而不是浏览器缓存里面的未修改的文件,所以,加上查询字符串就能强制浏览器下载最新修改过的文件,这样我们就能把修改后的效果第一时间呈现给访客,而不用等待访客去清空缓存或者缓存过期,个人觉得很不错的一个方法。

那么我们后面的查询字符串该加些什么好呢?最简单的办法莫过于加上文件的最后修改时间了,这样只要我们修改了文件,访客访问后立马就能看到最新效果。下面我就说说的我的实现方法(通过php的filemtime()函数获取最后修改时间的时间戳,然后转换成日期作为查询字符串,附加到css或js文件后面),看代码:

<?php
$cssTime = filemtime(TEMPLATE_PATH.'main.css');
?>
<link href="<?php echo TEMPLATE_URL; ?>main.css?t=<?php echo date('YmdGis',$cssTime) ?>" type="text/css" rel="stylesheet" />

当然,上面是emlog的实现方法,如果是其他网站,方法类似,原理都是一样的。

这么一修改的话,如果你修改了css文件后传导服务器上,php输出后会自动加上最后修改时间的查询字符串,保证用户下载的是最新的css文件,不需要自己在模板源码中去修改查询字符串,如果你没有修改过文件,那么文件的查询字符串不会变,你的文件照样能被浏览器缓存下来,所以我觉得此法henkexi。

不过,这个方法是不被谷歌的“page speed”认可,“page speed”认为加入查询字符串会导致一些代理服务器不缓存这些静态资源,见下图:

page speed

个人觉得加上并无大碍,毕竟淘宝他们也是这么做的~肯定有他们的道理在。

« 上一篇

说两句吧:

*

*

正在回复: 取消

  1. 26#
    Mucid
    Mucid 2011-09-11 22:50 回复
    介个,介个,对于鹚来版小时清理一次cookies和缓存的来说
    小松
    小松 2011-09-12 00:02 回复
    @Mucid:哈哈,缓存对你来说就是浮云。。。
  2. 25#
    空间
    空间 2011-09-10 11:49 回复
    不错啊
  3. 24#
    林西老九
    林西老九 2011-09-01 12:21 回复
    哈哈,点了下广告
    小松
    小松 2011-09-04 13:30 回复
    @林西老九:很不错啊,犀利
  4. 23#
    林西老九
    林西老九 2011-09-01 12:19 回复
    啥意思?
  5. 22#
    振动监测
    振动监测 2011-09-01 11:21 回复
    踩踩,支持支持~
  6. 21#
    cuiqingyao
    cuiqingyao 2011-08-31 11:08 回复
    技术博客,不错。。。。。。。。。。
  7. 20#
    俊文
    俊文 2011-08-31 10:39 回复
    天书终于看完了。。。
    小松
    小松 2011-09-04 13:30 回复
    @俊文:哈哈,这个其实不用看完的,看关键就行了
  8. 19#
    搜
    2011-08-31 09:49 回复
    小松越来越强大了
    小松
    小松 2011-09-04 13:27 回复
    @搜:搜搜也很强大啊,哈哈
  9. 18#
    MINI
    MINI 2011-08-31 02:39 回复
    能不能帮个忙,把评论改成嵌套形式的,多谢!!
    小松
    小松 2011-08-31 09:30 回复
    @MINI:这个我真帮不了你。。。
  10. 17#
    丰禾棋牌
    丰禾棋牌 2011-08-30 12:29 回复
    话说这些东西目前还用不上 不过收藏了
1 2 3

随机日志:

推荐日志:

彩色标签:

sitemap