给wordpress的静态资源加上时间戳

作者:norion时间:2013年6月8日评论次数:0 条

所谓静态资源是指web应用中的css、js、图片等资源,浏览器在加载网页中包含的各个资源时,先会判断缓存中是否已经包含了静态资源,如果包含,就不去服务器获取了。

比如说,我们修改wordpress中的style.css文件,那么,浏览器会“自作聪明”的地使用缓存中的版本,那么我们就看不到我们想要的结果,相信制作页面的前端同学应该有遇到这样的问题吧。

现在网上对于这个问题也有相对应的解决方法:让浏览器认为我们修改过的静态资源新的,重新缓存这个文件,一般我们只需要在调用的url加入版本号即可,比如:“style.css?v=yyyymmdd”,虽然定位到的资源仍然是style.css,但如果v的值不同,浏览器会认为是不同的资源。同理,对于js、图片来说,也是如此。

那么,讲了这么多,我们就来实现这样的功能,先实现style.css ,只要在functions.php加入下面代码:

function cache_style($stylesheet_uri){
    $arr = explode('wp-content', $stylesheet_uri);
    $stylesheet_uri = $stylesheet_uri . '?v=' . filemtime(ABSPATH . '/wp-content' . $arr[1]);
    return $stylesheet_uri;
}
add_filter('stylesheet_uri','cache_style',9999,1);

就这样,我们就在style.css加入了版本号,这段代码的原理是,利用php中的filemtime()函数读取style.css的修改时间,然后通过add_filter钩子重写stylesheet_uri,嘿嘿不难吧,如果还要再细一点,可以将filemtime()用data()格式化成日期。

而js怎么办呢?我们的js没有类似于stylesheet_uri的东西,原理当然也是利用filemtime(),照样实现照样的功能:

<?php echo '?v=' . filemtime( ABSPATH.'js放置的位置' ); ?>

其中,ABSPATH是php中的绝对地址,当然如果你不想代码看起来太杂,那么你可以尝试着将上面的代码封装起来,这里就不再深入了。同理,图片来说,也是如此,大家可以试试。

标签:

上一篇: wordpress免插件随机文章

下一篇:ie下img最好别出现src为空的情况

相关文章

评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注