js缓存问题怎么解决

js缓存问题怎么解决,第1张

面对的缓存问题有两个:一是页面引入的JS文件缓存。二是JS请求后台的缓存。对于第一种情况,有两种处理方式:

1、可以在页面引入的JS文件后面增加日趋,如果不经常改动的文件,可以在每次改动后修改后缀。

2、对于第二种情况,一般的处理方式是在请求的路径后面加上毫秒值,这样每次请求的路径都不一样,但是对于后台来说都是一样的,用来欺骗浏览器,进行实时请求,不调用浏览器缓存。

近几个月来的工作是一个交易系统持续改进项目 迭代发布周期大约为 ~ 周 最近一次迭代是V 版 在礼拜三完成发布 不幸的是 第二天上午就被老大逮过去 原来老大从生产中揪出了一个bug 大致的问题如下

系统中有一个常用的自定义控件 目的是协助选择客户 而V 版的持续改进需求是给控件增加两个筛选选项 支持不同的默认值配置 很简单的一个需 求 代码修改也简单 其中一个修改是给一个js文件里边的一个函数增加了一个传入参数 用来传递配置值 经过RC R测试 一切都显得很正常 不过上 了生产才被发现bug了 加载出来的客户明显不正常 数目不对 也与预期的查询配置不相符

检查控件内部跳转链接 发现问题 传递的参数明显与预期不符 而这个链接则是由上面修改过的JS函数生成 因此判定问题是由于客户端缓存了原版JS 文件 新函数的调用由旧函数所替换引发的 经过清除缓存 重新加载页面后 这个自定义控件能够正常工作 很不幸的是 我们是不能通过打电话告诉每一位用 户 你需要清除缓存 然后才能正常使用这个功能

到此时 我才意识到需要一种方法来控件JS的缓存问题 否则 后续任何涉及JS文件内容的修改 都会因为缓存无法获取最新JS文件 而导致生产事故

原则上 我们是需要在有JS更新的时候 才会去重新加载JS文件 而不是每次都重新加载 因此第一种做法给JS应用地址后添加随机参数是不可取的 因为它意味着 几乎每次加载页面都会是重新加载JS 而不会合理的利用缓存JS 但是 我们还有第二种更合理的做法 如果关注过一些国外网站代码 会发现 他们通常是在js链接后添加一个版本号参数 而不是随机数 当js代码发生修改时 只需要将版本号加 就可以很巧妙的解决通知客户端更新js文件 不知道 谁是第一个想到这种方法的人 不过毫无疑问 他是值得我们钦佩的 真是一个不错的idea的!

lishixinzhi/Article/program/Java/JSP/201311/20638


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11436012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存