Dengyihao 2017-10-11 15:05:37 5706次浏览 2条评论 5 3 0
  1. 作用:企业更新css,js , 为了防止一些用户浏览器自带缓存 , 导致一些更新内容无法显示
  2. 解决方案: 为我们的css,js 添加一个版本号 , 更新时我们只需改动我们的版本号就可以防止缓存了
  3. 代码实现:
    a. 在我们的框架中 新建一个文件用来存放我们的版本号 文件名称为:VERISION
    b. 在我们的入口文件中设置常量

       if(file_exists("../verision"))
       {
           define("VERISION",file_get_contents("../verision"));
       }
       else
       {
           define("VERISION",time());
       }
    

    c. 在我们封装类中 给我们的js,css文件 拼接我们的版本号

     namespace app\commands;
     class register
     {
         //type为类型 js,css path为我们引入的路径 ,depend为我们的依赖包也可以不写
         public static function registerFile($type,$path,$depend)
         {
             $ver = defined("VERISION") ? VERISION :time();
             $path = $path."?ver=".$ver;
             if($type == 'js')
             {
                 return \Yii::$app->getView()->registerJsFile($path,['depends'=>$depend]);
             }
             return \Yii::$app->getView()->registerCssFile($path,['depends'=>$depend]);
    
         }
         public static function registerCss($path,$depend)
         {
             return self::registerFile("css",$path,$depend);
         }
         public static function registerJs($path,$depend)
         {
             return self::registerFile("js",$path,$depend);
         }
     }
    
觉得很赞
  • 评论于 2017-11-03 09:13 举报

    缓存很烦,添加本版本号是不错的选择,但可以最好还是后台可控开启关闭比较好,开发发开,上线关闭,访问速度略快的

    觉得很赞
  • 评论于 2017-11-17 09:26 举报

    HTML也要加入相关的防止HTML缓存的meta标签,不然即使JS版本号变了,但是HTML页面依旧是缓存的话,还是不会刷新,除非强制刷新

您需要登录后才可以评论。登录 | 立即注册