前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端防止浏览器访问旧版 js 和 css 的优化思路

前端防止浏览器访问旧版 js 和 css 的优化思路

作者头像
猿芯
发布2020-08-27 10:04:34
2K0
发布2020-08-27 10:04:34
举报

前言

最近发版前端项目,用户经常反馈新添加功能在线上环境不好用,常出现新老页面并存的状况。

经前端同事排查发现,实际上只需要重新刷新一下页面就没事了。但是每次去通知用户肯定不现实。所以需要对前端的 js 和 css 等文件采取一定的缓存失效的措施,强制浏览器重新去服务器获取新的 js 代码以及 css 文件。

楼主经过实际的项目情况反馈,总结以下两点切实可行的办法,分享给大家,希望对大家有帮助。

  1. 路径后面加时间戳或者随机数的方式
  2. 采用 hash(md5)重命名文件

路径后面加时间戳或者随机数的方式

时间版本号

如果每次发布,针对修改过的 js 或者 css 文件路径加上时间的版本号,一般以年月日拼写。

代码语言:javascript
复制
<script type="text/javascript" src="lib/common.js?v=20190719"/>
<link rel="stylesheet" type="text/css" href="assets/css/ie/ie8.css?v=20190719" />

如果发生紧急情况,需要在一天当中对某些 css 或者 js 文件多次发版,可以把时间精确到时分秒。

目前楼主主推采用加版本号的方式,因为文件太多,只能做增量修改。好处是没有做任何修改js 或者 css 文件可以不用加版本号。

采用随机数

代码语言:javascript
复制
document.write('<script src=\".lib/common.js?r=' + Math.random() + "\"" + '><\/script>');
代码语言:javascript
复制
一般不建议用随机数的方式,因为每次刷新页面,随机数都会变化,那么浏览器认为一个新的url 需要重新请求服务端获取 js 或 css 文件,不会在使用浏览器本地缓存。同时占用网络带宽,影响服务器响应速度。

采用 hash(md5)重命名文件

可以利用 gulp-rev 或者 webpack

代码语言:javascript
复制
entry: {
 main: './src/common.js',
 slove: './src/ie8.js'
},
output: {
 filename: '[name].[hash].js',
 path: path.resolve(__dirname, 'dist')
}

例如百度搜索首页,就是利用 hash 给 js和 css文件重命名。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构荟萃 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最近发版前端项目,用户经常反馈新添加功能在线上环境不好用,常出现新老页面并存的状况。
  • 经前端同事排查发现,实际上只需要重新刷新一下页面就没事了。但是每次去通知用户肯定不现实。所以需要对前端的 js 和 css 等文件采取一定的缓存失效的措施,强制浏览器重新去服务器获取新的 js 代码以及 css 文件。
  • 时间版本号
  • 可以利用 gulp-rev 或者 webpack
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档