为什么前端效果客户看不到?
甲方:搞什么!我没看到效果啊!
前端:我好难啊,我明明改了,你多刷新几次,强制刷新试试,就是键盘左下角那个键跟F5一起按....
这个大概就是前端工程狮一个很日常的对话了。为什么总是出现这种情况呢?是因为我们的浏览器会有缓存,让网站访问更快。这样好处不多说了,缺点就是前端更新了文件,浏览器没有及时更新缓存。同学们大多都是这样来解决的,手动在模板里为css文件(或其他需要更新缓存的文件)追加一个参数,或者叫版本号。例如:
<link rel='stylesheet'href='css/custom.css?ver=1.0'type='text/css'/>
以上?ver=1.0,就是我们前端加上的,为了让浏览器知道我这个文件更新了,你快来抓取我的。然后不停的修改,不停的更新版本号,一直到一刀?ver=999。这也是一个很痛苦的过程。
那么有没有一个优秀的解决方案呢?答案是有的,看这里。
解决方案
先介绍一个PHP函数:filemtime。
filemtime()函数返回文件内容的上次修改时间。
如果成功,该函数将以Unix时间戳形式返回文件内容的上次修改时间。如果失败,则返回FALSE。
我们来利用这个文件修改时间戳做些文章,写一个方法:
//自动更新时间版本号
public function auto_version($url){
$ver=filemtime(DOC_PATH.$url);
return$url.'?v='.date("YmdHis",$ver);
}
将文件路径传入,我们就会返回一个带参数的新路径,这样就完成了根据文件更新时间自动生成版本号的过程。
下面就请移步:用PbootCms扩展标签定制自己的写模板方式
为什么不写下去了?因为我严重推荐您使用上面这个扩展,上面的文章中已经集成了这个功能,并且对模板素材:图片、js、css等都做了相关优化。至少不用每次写个路径都要写一遍:{pboot:sitepath},多冗余啊。