VIP福利
主页 > 建站问题 > CMS教程 > pbootcms网站修改CSS样式后自动更新缓存(CSS自动增加版本号)

pbootcms网站修改CSS样式后自动更新缓存(CSS自动增加版本号)

一般来说样式修改后,因为浏览器有缓存上线的网站简单刷新没有变化,这个时候需要强制刷新(ctrl+f5)才可以立马看到效果,但是客户不懂看不到修改效果还要解释。 其实可以给修改的样式增加版本号来解决,这样就可以一刷新看到最新样式,例如常见的手动添加版本号方式: linkrel=stylesheethref={pboot:sitetplpath}/css/common.css?v=1//加?v=1,每次后面的数字变化 那么有没办法让版本号每次自动变化呢,而且要有修改了去刷新才变化,没修改去刷新不变化。这 […]



一般来说样式修改后,因为浏览器有缓存上线的网站简单刷新没有变化,这个时候需要强制刷新(ctrl+f5)才可以立马看到效果,但是客户不懂看不到修改效果还要解释。

其实可以给修改的样式增加版本号来解决,这样就可以一刷新看到最新样式,例如常见的手动添加版本号方式:


 
  1. <link rel="stylesheet" href="{pboot:sitetplpath}/css/common.css?v=1"> //加?v=1,每次后面的数字变化

那么有没办法让版本号每次自动变化呢,而且要有修改了去刷新才变化,没修改去刷新不变化。这种自动方法是有的,下面就来介绍下相关操作。

实现步骤

2022-12-24不二开不影响在线更新方式,使用pbootcms扩展标签来实现,新建个标签{ver(静态文件路径)}

1、打开扩展标签专属文件 \apps\home\controller\ExtLabelController.php

①引入Config


 
  1. use core\basic\Config; //@pbhtml

image.png

②在$this->test();下方增加$this->smartVersion();

③新增对应标签函数smartVersion()和auto_version方法


 
  1. //静态文件尾巴增加时间版本号标签@pbhtml-version
  2. private function smartVersion(){
  3.     $pattern = '/\{ver\s?\(\{([^\}]+)\}\/([^\}]+)\)\}/';
  4.     if (preg_match($pattern, $this->content, $matches)) {
  5.         $this->content = preg_replace_callback($pattern,function($matches){
  6.             if($matches){
  7.                 return $this->auto_version(APP_THEME_DIR.'/'.$matches[2]);
  8.             }
  9.         },$this->content);
  10.     }
  11. }
  12. // 自动更新时间版本号@pbhtml-version
  13. public function auto_version($url){
  14.     $ver = filemtime($_SERVER['DOCUMENT_ROOT'].$url);
  15.     return $url.'?v='.date("YmdHis",$ver);
  16. }

示例图:

image.png

2、修改原有调用样式或JS的标签,只要是静态文件的均可添加,规则{ver(xxxxxx)}

原有的:


 
  1. {pboot:sitetplpath}/skin/css/style.css)
  2. {pboot:sitetplpath}/skin/js/cms.js

修改后:

  1. {ver({pboot:sitetplpath}/skin/css/style.css)}
  2. {ver({pboot:sitetplpath}/skin/js/cms.js)}

参考以上方式在需要的地方修改即可


说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!