问题:

当我们修改js和css文件时往往需要清除浏览器的缓存,否则有些效果就看不到更新过后的。

通过对js,css文件内容进行hash运算,生成一个文件的唯一hash字符串(如果文件修改则hash号会发生变化)

替换html中的js,css文件名,生成一个带版本号的文件名,这样加版本号的静态文件就不会存在缓存的问题了。

解决:

我的当前版本

     "gulp-rev": "7.1.2",
"gulp-rev-collector": "1.2.4",
"rev-path": "^2.0.0",

gulp有自动化添加版本hash的插件gulp-rev,它的效果是更改文件名,如下

     <link rel="stylesheet" href="./css/jquery.e-calendar-de29b48f93.css">
<link rel="stylesheet" href="./css/base-8688d776d1.css">
<link rel="stylesheet" href="./css/style-93423ee3ca.css">

gulp直接更改了文件名,而我们想要的效果则是下面这种添加版本号。

     <link rel="stylesheet" href="./css/jquery.e-calendar.css?v=de29b48f93">
<link rel="stylesheet" href="./css/base.css?v=8688d776d1">
<link rel="stylesheet" href="./css/style.css?v=93423ee3ca">

所以我们需要更改一下gulp的文件,更改gulp-rev和gulp-rev-collector

打开node_modules\gulp-rev\index.js

第144行 manifest[originalFile] = revisionedFile;
更新为:
manifest[originalFile] = originalFile + '?v=' + file.revHash;

打开nodemodules\gulp-rev\nodemodules\rev-path\index.js

第9行 return modifyFilename(pth, (filename, ext) => `${filename}-${hash}${ext}`);
更新为:return modifyFilename(pth, (filename, ext) => `${filename}${ext}`);

打开node_modules\gulp-rev-collector\index.js

 第40行 let cleanReplacement =  path.basename(json[key]).replace(new RegExp( opts.revSuffix ), '' );
修改为:
let cleanReplacement = path.basename(json[key]).split('?')[0];

再执行gulp命令,得到的结果如下(效果正确):

<link rel="stylesheet" href="../css/default.css?v=803a7fe4ae">
<script src="../js/app.js?v=3a0d844594"></script>

最新文章

  1. TCP/IP 之大明王朝邮差
  2. JLOI2010 冠军调查 最小割
  3. Flex4/Flash多文件上传(带进度条)实例分享
  4. ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
  5. 在网页中添加分享到微信、QQ、微博
  6. 浅谈zygote服务中的设计思路
  7. CSS3新特性罗列
  8. [Head First Python]4.读取文件datafile.txt, 去除两边空格, 存储到列表,从列表格式化(nester.py)后输出到文件man.out,other.out
  9. windows 下文件的高级操作
  10. 正确理解python的装饰器
  11. 数据结构之队列c代码实现
  12. JS点击按钮打开新的独立页面
  13. 蓝鲸 CTF web——密码泄露
  14. sql server 学习笔记 ( row_number, rank, dense_rank over partition by order by )
  15. js /Date(1550273700000)/ 格式转换
  16. jtable时间编辑器
  17. Java第一章
  18. MySQL技术内幕读书笔记(五)——索引与算法
  19. 安装MySQL_Python时出现is not a supported wheel on this platform.
  20. Recycleview 横竖屏

热门文章

  1. Java入门程序开发
  2. 每天一点点之vue框架开发 - 引入bootstrap
  3. POJ 3096:Surprising Strings
  4. TX2-刷机完成后安装程序ubuntu_linux命令&amp;TX2学习总结
  5. Java生鲜电商平台-如何使用微服务来架构生鲜电商B2B2C平台?
  6. Python学习——装饰器/decorator/语法糖
  7. NCRE的JAVA二级考试大纲
  8. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring自动装配Bean
  9. 低JAVA版本,高兼容性启动
  10. QEMU和Firmadyne基本知识|模拟MIPS程序