更新css js同时更新客户端浏览器的缓存
最近对主题优化比较频繁,修改完主题,其他人访问你的博客,有可能访问的是之前缓存的样式。
我们暂时不去研究浏览器的缓存过期时间,或则是更新时间,更何况不同浏览器缓存机制也有差异,像我们这种经常修改主题的博主,客户端缓存就应该由我们自己来控制,随时更新!
浏览器缓存不仅提高访问速度,也缓解服务器压力,所以不可能在页头加入no-cache, no-store之类把缓存关掉,就算这么做了,不同浏览器也未必听你的。
有人通过修改css和js的路径来更新缓存,也是不可取的,这样做每次都要去改代码,也是非常麻烦的,还有人通过修改主题名字,这样虽然可以,但是有些主题参数会丢失的。
所以最好的方式就是给js和css加入版本号,比如:<script type="text/javascript" src="zy.js?version=3.1.2"></script> ,或则css文件href="style.css?version=3.1.2这样,后面参数对css和js文件没有影响,改变版本号,客户端浏览器就会重新下载新的js或css文件,起到刷新缓存的作用。
当然,手动修改版本号也是麻烦的,最直接的就是使用时间戳作版本号,已经有人想好了代码,感谢老杨提醒,这段代码只要css和js更新,就自动更新版本号,比如:style.css?ver=1542474833。
以下是放入主题function的代码:
function theme_scripts() {
wp_enqueue_style( 'style', get_stylesheet_uri(), array() , filemtime(get_stylesheet_directory().'/style.css'));
wp_enqueue_script( 'script', get_template_directory_uri().'/zy.js', array(), filemtime(get_stylesheet_directory().'/zy.js') , true );
}
add_action( 'wp_enqueue_scripts', 'theme_scripts' );
注意代码里面的css和js地址,换成你主题的相对地址,记得删掉你之前header调用的css和js代码。
上一篇:[转载]2018:重在参与!
不能失去沙发。
@西城杨柳弄春柔 你的站无法访问?
@郑永 本来挂在github pages 的,前段时间打开特别的慢,我就给取消了。
@西城杨柳弄春柔 那接下来了?何去何从?
@郑永 在考虑要不要上阿里国际的车
@西城杨柳弄春柔 有钱可以任性哈
@西城杨柳弄春柔 国际那必须飞机哈。
可以用时间戳作版本号:https://cyhour.com/357/
@老杨 也是可以,访问量不大,服务器没压力。
@老杨 去看了下,最后那个方法是不错,我之前都没搜到
照这个情况下去,你可以出个主题了。
@灰常记忆 这主题好几年前了,一直变到现在这样。有啊,只是不想折腾啊。https://xptt.com/wordpress-xin-zhu-ti-chu-lu-xptt.html
以前经常折腾主题,现在选定一个满意的就懒得再改了
@SN 能选到满意就好。
我手动改版本号,嘿嘿,因为都不怎么折腾了
@zwwooooo 哇,好久没看到你了,一看到你,感觉wp或博客又重生了,不然总感觉少了个大神陪伴,哈哈。
时间渐少,还能继续折腾wp的。真的不多了
@Uz 以前没有想到这个需求,转一圈,还是能看到,存在必有它的道理。
只要爱好还在,继续折腾
@点滴记录 对的,主题能玩很久。
@点滴记录 只要博客在,系统还在用这个,就少不了折腾,哈哈,就像家里房子一样,过一段时间你又喜欢改改补补。
我都是手动改的版本号,主题里文件的url都是写死的,修改了哪个文件再去改版本号,各个文件的版本号都不一样。
@湛蓝色印记 不过还是这个省心,一次性解决问题。
技术性的东西已经不想在去折腾,只要能打开站点就行..
@旧日的足迹 我也是这么认为,但是,需求总是有。。折腾无止境。。
我现在都是用CDN了,一般都是在CDN强制刷新一下!效率很低!但多少有点儿作用!这个思路很不错!
@明月登楼 嗯,不过还是推荐按本文这个简单方法,一劳永逸。
这个真心不错,修改样式表,就会更新加个准确的时间戳,如今wordpress 的内置代码编辑器很强大了,语法提示很牛,修改php自动检测错误,真心很赞,以后直接在wordprss 制作主题了~~
@夜枫 那个样式编辑其实有个不好地方(有优缺点),经常会遇到无法更新,原因是自带的检测功能失常状况,不过总体还是赞的,强迫症的会遇到css语法检测错误问题,哈哈。