ThinkPHP视图css和js加上版本号防止缓存
前台模块中,我的所有控制器都继承BaseController,虽然ThinkPHP中我们提供了两个配置项
'TMPL_CACHE_ON' => false,// 禁止模板编译缓存
'HTML_CACHE_ON' => false,/ /禁止静态缓存
但是浏览器的缓存不可避免,通常的解决方法是页面中引入的外部css和js文件加上版本号 版本号规则一般都是自己约定的 通常是随机数 在这里我以当前时间戳作为版本号演示
在BaseController中 重写基类控制器Controller的display方法
protected function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') {
$content = parent::fetch(); // 获取模板解析的内容
// 以下都是由正则匹配字符串并替换完成
// 匹配到页面中所有css和js路径
// 批量替换css和js路径 追加版本 如 index.js 替换成 index.js?v=1501204866 类似
// 最后将替换完成的内容通过父类display输出
parent::display($templateFile,$charset,$contentType,$content,$prefix);
}
ThinkPHP视图css和js加上版本号防止缓存的更多相关文章
- 解决修改css或js文件,浏览器缓存更新问题。
在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css.js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从 ...
- gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
参考打包教程: http://www.cnblogs.com/tugenhua0707/p/4069769.html http://www.cnblogs.com/tugenhua0707/p/498 ...
- (网页)css和js的版本号问题
HTML页面自动清理js.css文件的缓存,之前用的是?v=11每次都要找寻到网页进行更改,非常的麻烦. <script type="text/javascript"> ...
- 将css和js缓存到localStorage缓存,提高网页响应速度
适用于小站点,这很极致,很快速~~ /** * Created by SevenNight on 2016/9/21 0021. * 插件功能:使用localStorage缓存js和css文件,减少h ...
- gulp为css,js添加版本号
由于cdn缓存,更改样式后会有一段时间不生效,解决方法就是给css,js加上版本号效果如下: 1.安装gulp插件 npm install --save-dev gulp-rev (version:9 ...
- 使用时间戳引入css、js文件
前言 最近在一家创业公司实习,主要负责新版官网和商家平台管理系统的前端开发和维护,每次测试都要上传文件到ftp服务器端测试,初期由于更新修改比较频繁,每次都是直接上传覆盖css.js.php文件,链接 ...
- 引用js或css后加?v= 版本号的用法
<span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version ...
- 引用js或css后加?v= 版本号的用法(转)
<span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version ...
- ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号
写在前面 在项目部署当中会需要更新 css 文件或 js 等资源文件,为了避免由于浏览器缓存的原因无法加载新的 css 或 js ,一般的做法是在资源文件的后面加上一个版本号来解决,这样浏览器就会去服 ...
随机推荐
- create-react-app+react-app-rewired引入antd实践
注:模块化按此方发npm install antd --save npm install babel-plugin-import --save-dev npm install react-app-re ...
- Node.js 几个重启工程的工具
pm2, forever, nodemon, supervisor 均可在 npm 查找相关资料和用法. 线上工程推荐 pm2 开发推荐 supervisor
- JMS学习十一(ActiveMQ Consumer高级特性之独有消费者(Exclusive Consumer))
一.简介 Queue中的消息是按照顺序被分发到consumers的.然而,当你有多个consumers同时从相同的queue中提取消息时, 你将失去这个保证.因为这些消息是被多个线程并发的处理.有的时 ...
- [CF1101F]Trucks and Cities:分治优化决策单调性
分析 好像是有一个叫这个名字的算法,链接. 令\(f[i][j][k]\)表示一辆每公里耗油量为\(1\)的货车从\(i\)到\(j\)中途加\(k\)次油最小的油箱容量.枚举所有的起点和中途加油的次 ...
- React曾经忽略的知识点(上)
1.JSX 防注入攻击 你可以放心地在 JSX 当中使用用户输入 const title = response.potentiallyMaliciousInput; // 直接使用是安全的: cons ...
- android自定义camera以及uri和文件路径之间的转换
相对直接调用系统的camera,这种方法使用得相对还少一些.根据api文档,步骤如下: 定义一个预览类 可以参照<android高薪之路>这本书上面,有这种方法的一种完整实现 而对应的ac ...
- centos7 安装 chrome
1. 配置yum源 在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repo cd /etc/yum.repos.d/ vim google-chrome.repo ...
- 超过 150 个最佳机器学习,NLP 和 Python教程
超过 150 个最佳机器学习,NLP 和 Python教程 微信号 & QQ:862251340微信公众号:coderpai简书地址:http://www.jianshu.com/p/2be3 ...
- 面试题:String类通用构造,拷贝构造,析构,赋值函数实现
已知 String 类定义如下: class String { public: //通用构造函数 String(const char* str = NULL); //拷贝构造函数 String(con ...
- 【Python】—— 获取当前运行函数名称和类方法名称
原文出处: python笔记19-获取当前运行函数名称和类方法名称 获取函数名称 1.在函数外部获取函数名称,用.__name__获取 2.函数内部获取当前函数名称,用sys._getframe(). ...