如何解决浏览器缓存
2017-09-07 14:39
302 查看
你是否遇到过:改了css,改了js,替换了图片,但是没有生效的情况呢?
这个问题其实是浏览器缓存了css,js,和图片所造成的
解决方案:
1:如果你是前后端分离的开发模式,那么使用webpack等打包工具生成md5就可以解决了,这个方案是目前的主流方法。
但是,现在还存在大部分并非是前后端分离的项目需要我们维护
那么,我们可以通过使用一些脚本语言来动态改变对应url的版本号来解决
贴上php代码:
这个问题其实是浏览器缓存了css,js,和图片所造成的
解决方案:
1:如果你是前后端分离的开发模式,那么使用webpack等打包工具生成md5就可以解决了,这个方案是目前的主流方法。
但是,现在还存在大部分并非是前后端分离的项目需要我们维护
那么,我们可以通过使用一些脚本语言来动态改变对应url的版本号来解决
贴上php代码:
<?php /* Creat by xiaolu289 2017/9/7 11:19 该脚本解决更换图片后浏览器还是旧图片的问题 */ $baseDir = __DIR__; $publicDir = "{$baseDir}/Public"; $viewDir = "{$baseDir}/Application/Home/View"; $cssDirs = array( "{$publicDir}/css", "{$publicDir}/mobile/css", ); $imgReg = "/([\w-]+\.(?:png|jpg|gif))(?:\?[\w]+=[\w]+)?/"; $cssReg = "/([\w-]+\.(?:css))(?:\?[\w]+=[\w]+)?/"; $VERSION = time(); /* 队列方式遍历文件夹 参考链接:http://blog.csdn.net/nuli888/article/details/52144752 */ function read_dir_queue($dir){ $files=array(); $queue=array($dir); while($data=each($queue)){ $path=$data['value']; if(is_dir($path) &&$handle=opendir($path)){ while($file=readdir($handle)){ if($file=='.'||$file=='..') continue; $files[] = $real_path=$path.'/'.$file; if (is_dir($real_path)) $queue[] = $real_path; } } closedir($handle); } return $files; } // 遍历所有css目录 foreach($cssDirs as$item){ $cssFiles = read_dir_queue($item); foreach($cssFiles as$item){ if(is_file($item)){ // 设置版本号 $fileContent=file_get_contents($item); file_put_contents($item,preg_replace($imgReg,"$1?v={$VERSION}",$fileContent)); } } } // 遍历view目录 $viewFiles=read_dir_queue($viewDir); foreach($viewFiles as$item){ if(is_file($item)){ // 设置版本号 $fileContent=file_get_contents($item); $fileContent=preg_replace($imgReg,"$1?v={$VERSION}",$fileContent); file_put_contents($item,preg_replace($cssReg,"$1?v={$VERSION}",$fileContent)); } }
相关文章推荐
- 如何解决网站页面CSS、JS脚本在浏览器的缓存问题
- 使用时间戳解决浏览器缓存问题
- 部分浏览器(如chorme)缓存js的问题解决
- 晚上终于解决了我的代码中history与浏览器缓存问题!
- Ajax解决浏览器的缓存问题
- 如何清空微信浏览器缓存?
- Java+Selenium3框架设计篇6-如何解决多条类下用例执行只启动一次浏览器的问题
- Ajax解决浏览器的缓存问题
- [WPF] WPF浏览器程序:如何发布并解决不信任程序问题
- gulp 添加版本号 解决浏览器缓存问题
- Ajax中浏览器的缓存问题解决方法
- 如何解决IE6/IE7/IE8浏览器不兼容HTML5新标签的问题
- python + selenium + chrome 如何清理浏览器缓存
- 如何清除浏览器缓存?
- 如何解决自定义404页面在IE等浏览器中无法显示问题
- 项目总结---- imageLoder 的2个Bug解决方法、1.9.4如何选择性删除disk缓存和其它一些错误。
- Maven构造版本号的方法解决浏览器缓存问题
- 使用时间戳解决浏览器缓存问题
- web网站css,js更新后客户浏览器缓存问题,需要刷新才能正常展示的解决办法
- 如何解决css样式表在不同浏览器中显示效果不同的问题