知识大全 js文件缓存之版本管理详解

Posted 文件

篇首语:非淡泊无以明志,非宁静无以致远。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 js文件缓存之版本管理详解相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

cha138/Article/program/Java/JSP/201311/20638

相关参考

知识大全 JS清除IE浏览器缓存的方法

JS清除IE浏览器缓存的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文为大家详细介绍下js

知识大全 缓存详解

  我们可以在HTML页面利用metatag和PHP程序中通过header来控制例如  代码如下  header(CacheControl:maxage=mustrevalidate);//小时  h

知识大全 深入Nginx + PHP 缓存详解

深入Nginx+PHP缓存详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对Nginx中的

知识大全 JS文本框默认值处理详解

JS文本框默认值处理详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下代码是对JS文本框的默认

知识大全 js replace 与replaceall实例用法详解

这篇文章介绍了jsreplace与replaceall实例用法详解有需要的朋友可以参考一下   stringObjreplace(rgExpreplaceText)参数stringObj必选

知识大全 js正则表达式的使用详解

本篇文章是对js中正则表达式的使用进行了详细的分析介绍需要的朋友可以参考下   js中的正则表达式比起C#中的正则表达式要弱很多但基本够用了定义正则表达式关于验证的三个这则表达式方法正则表达

知识大全 js中widow.open()方法使用详解

本文为大家详细介绍下js中widowopen()方法的各项参数及使用示例有想学习的朋友可不要错过了希望对大家有所帮助   一windowopen()支持环境JavaScript+/JScri

知识大全 js中的前绑定和后绑定详解

这篇文章详细介绍了js中的前绑定和后绑定有需要的朋友可以参考一下   其主要意思就是看我有没有用过前绑定即Dom树中的某些元素在还没有创建出来时就指定该类型的元素一出生就应该拥有的某些事件在

知识大全 企业库缓存依赖的实现-基于文件依赖

  最近在做项目的时候采用用Codesmith和Nettiers生成的框架来实现生成的代码核心是基于企业库的所以最近在恶补企业库对于缓存的学习当然是必不可少的尤其是经常要用到得缓存依赖这里我用到的是文

知识大全 asp从缓存读数据实例

从文件读数据要比直接从数据库快测试读出条新闻读数据库用了毫秒读文件只用了毫秒下例为使用文件缓存的代码  使用方法在需要使用文件缓存的页面加入下列代码 <!#incl