ThinkPHP动态版本控制
动态版本控制可以根据时间戳来实现,但是这样的话,每次打开页面都会重新下载加了版本控制的文件,如果你的页面自身打开本来就慢的话,
这样一来,无疑会带来很差的用户体验。
但是如果在每个引用文件后面都手动加上版本,如果页面比较多的话,这很明显是个很蠢的做法,所以我们可以这样做:
(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动态版本控制的更多相关文章
- thinkphp动态注册路由
thinkphp动态注册路由 一.总结 1.thinkphp使用路由步骤:a.config配置文件中开启路由 b.Route类的rule方法创建路由(在Routephp中)Route::rule(' ...
- thinkphp 动态验证码
<?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { ...
- thinkphp 动态查询
借助PHP5语言的特性,ThinkPHP实现了动态查询,核心模型的动态查询方法包括下面几种: 方法名 说明 举例 getBy 根据字段的值查询数据 例如,getByName,getByEmail ge ...
- thinkphp 动态配置
之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数. 设置新的值: C('参数名称','新的参数值 ...
- thinkphp 动态 级联
<div class="form-item"> <label class="item-label">一级分类<span class ...
- Thinkphp动态切换主题
'DEFAULT_THEME' => '2014', 'TMPL_DETECT_THEME' => true, // 自动侦测模板主题 'THEME_LIST' => '2012,2 ...
- Android-Gradle(三)
依赖管理是Gradle最闪耀的地方,最好的情景是,你仅仅只需添加一行代码在你的build文件,Gradle会自动从远程仓库为你下载相关的jar包,并且保证你能够正确使用它们.Gradle甚至可以为你做 ...
- Gradle for Android 第三篇( 依赖管理 )
依赖管理 这会是一个系列,所以如果你还没有看我之前的几篇文章,请先查看以下文章: Gradle for Android 第一篇( 从 Gradle 和 AS 开始 ) Gradle for Andro ...
- 【转载】Gradle for Android 第三篇( 依赖管理 )
依赖管理是Gradle最闪耀的地方,最好的情景是,你仅仅只需添加一行代码在你的build文件,Gradle会自动从远程仓库为你下载相关的jar包,并且保证你能够正确使用它们.Gradle甚至可以为你做 ...
随机推荐
- mysql-批量修改表字段中的某一部分内容
MySQL批量替换指定字段字符串语句(1)updat 表名 set 字段名=replac(字段名,'原来的内容','替换后的内容') 举一个例子,就是我实际操作的时候的命令: update cpg14 ...
- PHP处理海量样本相似度聚类算法
catalogue . TF-IDF . 基于空间向量的余弦算法 . 最长公共子序列 . 最小编辑距离算法 . similar_text . local sensitive hash 局部非敏感哈希 ...
- 消息中间件:RabbitMQ基本探索
RabbitMQ是一个基于AMQP协议(Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中 ...
- firefox屏蔽广告真是太好了
在ubuntu上使用firefox有些页面的广告很多,很讨厌. 突然想到是否可以把这些广告屏蔽掉.在网上搜索了一下,发现有个 adblock plus插件,安装上发现广告没有了,很干净. 开源软件就是 ...
- Java多线程干货系列—(一)Java多线程基础
前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...
- wpf converter converterparameter 绑定多参数
1. converterparameter不是依赖属性,所以不能用binding. 2. 可以把converter 的接口 IValueConverter改为 IMultiValueConverter ...
- Examples of MIB Variables - SNMP Tutorial
30.5 Examples of MIB Variables Versions 1 and 2 of SNMP each collected variables together in a singl ...
- 图解JVM的类加载机制(详细版)
注:本文为作者整理和原创,如有转载,请注明出处. 上一篇博文,把JAVA中的Class文件格式用图形的方式画了一下,逻辑感觉清晰多了,同时,也为以后查阅的方便. Class文件只是一种静态格式的二进制 ...
- 在Excel中使用SQL语句查询和筛选
本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...
- IHttpModule生命周期
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...