动态版本控制可以根据时间戳来实现,但是这样的话,每次打开页面都会重新下载加了版本控制的文件,如果你的页面自身打开本来就慢的话,

这样一来,无疑会带来很差的用户体验。

  但是如果在每个引用文件后面都手动加上版本,如果页面比较多的话,这很明显是个很蠢的做法,所以我们可以这样做:

  (1)在入口文件定义公共模块:

             define('COMMON_PATH','./Common/');

     然后将Home文件夹下的Common剪切出来,放在和入口文件同目录。

  (2)在Common-->Conf-->config.php中配置一个数组:

          <?php
            return array(
            //CSS版本控制
            'cssVersion' => '1.0',
            'cssVersionid' => '1.0',
            //JS版本控制
            'jsVersion' => '1.0',
            'jsVersionid' => '1.0',
            );

(3)在控制器中引入      

        <?php
          namespace Home\Controller;
          use Think\Controller;
          class IndexController extends Controller {
            public function index(){
            /* 版本控制 */
            $config = require(COMMON_PATH.'Conf/config.php');

            $this->assign('cssVersionid', $config['cssVersionid']);

            $this->assign('jsVersionid', $config['jsVersionid']);
            /* 页面显示 */
            $this->display();
              }
            }

     当然所有的assign必须放在$this->display();前面。在thinkPHP3.2.3中,你也可以这样写:

        <?php
          namespace Home\Controller;
          use Think\Controller;
          class IndexController extends Controller {   

              public function __construct(){ /* 版本控制 */

                 parent::__construct();

                   $config = require(COMMON_PATH.'Conf/config.php');

                 $this->assign('cssVersionid', $config['cssVersionid']);

                 $this->assign('jsVersionid', $config['jsVersionid']);
               }

               public function index(){
               /* 页面显示 */
               $this->display();
               }
           }

  (4)这时候就可以在HTML页面引入了

         <link rel="stylesheet" type="text/css" href="__PUBLIC__/css/page/index.css?v={$cssVersionid}">

         <script src="__PUBLIC__/js/page/index.js?v={$jsVersionid}"></script>

  这样一来,每次有更新的话,只需要手动在config.php更改版本就行了,而且可以只更新CSS或JS其中一个。

ThinkPHP动态版本控制的更多相关文章

  1. thinkphp动态注册路由

    thinkphp动态注册路由 一.总结 1.thinkphp使用路由步骤:a.config配置文件中开启路由  b.Route类的rule方法创建路由(在Routephp中)Route::rule(' ...

  2. thinkphp 动态验证码

    <?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { ...

  3. thinkphp 动态查询

    借助PHP5语言的特性,ThinkPHP实现了动态查询,核心模型的动态查询方法包括下面几种: 方法名 说明 举例 getBy 根据字段的值查询数据 例如,getByName,getByEmail ge ...

  4. thinkphp 动态配置

    之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数. 设置新的值: C('参数名称','新的参数值 ...

  5. thinkphp 动态 级联

    <div class="form-item"> <label class="item-label">一级分类<span class ...

  6. Thinkphp动态切换主题

    'DEFAULT_THEME' => '2014', 'TMPL_DETECT_THEME' => true, // 自动侦测模板主题 'THEME_LIST' => '2012,2 ...

  7. Android-Gradle(三)

    依赖管理是Gradle最闪耀的地方,最好的情景是,你仅仅只需添加一行代码在你的build文件,Gradle会自动从远程仓库为你下载相关的jar包,并且保证你能够正确使用它们.Gradle甚至可以为你做 ...

  8. Gradle for Android 第三篇( 依赖管理 )

    依赖管理 这会是一个系列,所以如果你还没有看我之前的几篇文章,请先查看以下文章: Gradle for Android 第一篇( 从 Gradle 和 AS 开始 ) Gradle for Andro ...

  9. 【转载】Gradle for Android 第三篇( 依赖管理 )

    依赖管理是Gradle最闪耀的地方,最好的情景是,你仅仅只需添加一行代码在你的build文件,Gradle会自动从远程仓库为你下载相关的jar包,并且保证你能够正确使用它们.Gradle甚至可以为你做 ...

随机推荐

  1. 解决 PHPExcel 长数字串显示为科学计数

    解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...

  2. 第二次团队作业 -- 预则立&&他山之石

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬涛 一.团队任务计划 周数 ...

  3. 旧版青奥遇到的bug

    1.Cannot create PoolableConnectionFactory (Unknown database 'yoms') 答:服务器上的库都被人删了. 2.Cannot create P ...

  4. sublime text3下BracketHighlighter的配置方法

    st3的配置方法和st2是有区别的,所以网上搜索到的方法大多不能用,我google之后总结了一下. 一. 1.在st3中按preferences-->package settings--> ...

  5. JQurey

    jQuery 是一个 JavaScript 库.极大地简化了 JavaScript 编程,很容易学习. jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML ...

  6. BZOJ 2179: FFT快速傅立叶

    2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2923  Solved: 1498[Submit][Status][Di ...

  7. django创建blog

    如果本文看不懂的,去看的我视频吧!http://www.testpub.cn/ ------------------------------------------- Django 自称是" ...

  8. Python SMTP邮件模块

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件, ...

  9. log4net各种Filter使用【转】

    log4net各种Filter使用[转] log4net里面的filter类常用的为:      1.DenyAllFilter         拒绝所用的日志输出         <filte ...

  10. Spring系列之AOP实现的两种方式

    AOP常用的实现方式有两种,一种是采用声明的方式来实现(基于XML),一种是采用注解的方式来实现(基于AspectJ). 首先复习下AOP中一些比较重要的概念: Joinpoint(连接点):程序执行 ...