更新js缓存办法

摘要:
但是缓存会带来一个问题,就是如何在服务端更新完文件之后,客户端能够及时得到更新。解决思路:1.在一个配置文件中维护js文件map;2.在页面中通过jsmap的key来动态加载js文件;3.在js文件做出变动之后,只要修改相应js的版本号实例:1.在一个配置文件中维护js文件mapJs代码//jsMapvarJSHash={index:[{url:"http://xxxx.js",version:"1.0"}],edit:[{url:"http://xxxx.js",version:"2.0"}]}//jsMapvarJSHash={index:[{url:"http://xxxx.js",version:"1.0"}],edit:[{url:"http://xxxx.js",version:"2.0"}]}2.在页面中通过jsmap的key来动态加载js文件;Html代码loadJS;//根据传入的key,动态生成js加载语句functionloadJS{varnode=JSHash[sKey];for{document.writeln('˂scriptsrc="'+node[i].url+'?其他js由于链接不变,所以仍旧使用缓存中的js.

http://zhenggm.iteye.com/blog/680600

遇到的问题:
在访问量比较大的系统中,我们需要将一些静态的文件在客户端缓存,以减少下载的流量,从而加快客户端访问的速度。但是缓存会带来一个问题,就是如何在服务端更新完文件之后,客户端能够及时得到更新。
解决思路:
1. 在一个配置文件中维护js文件map;
2. 在页面中通过js map的key来动态加载js文件;
3. 在js文件做出变动之后,只要修改相应js的版本号
实例:
1. 在一个配置文件(config.js)中维护js文件map(注意:config.js是不缓存的,每次更新)
Js代码 复制代码收藏代码更新js缓存办法第3张
  1. //jsMap
  2. varJSHash={
  3. index:[{url:"http://xxxx.js",version:"1.0"}],
  4. edit:[{url:"http://xxxx.js",version:"2.0"}]
  5. }
//js Map
var JSHash = {
index: [{url:"http://xxxx.js", version: "1.0"}],
edit:  [{url:"http://xxxx.js", version: "2.0"}]
}

2. 在页面中通过js map的key来动态加载js文件;
Html代码 复制代码收藏代码更新js缓存办法第3张
  1. <scriptsrc=config.js></script>
  2. <script>
  3. loadJS("edit");
  4. </script>
  5. //根据传入的key,动态生成js加载语句
  6. functionloadJS(sKey){
  7. varnode=JSHash[sKey];
  8. for(vari=0;i<node.length;i++){
  9. document.writeln('<scriptsrc="'+node[i].url+'?version='+node[i].version+'"><\/script>');
  10. }
  11. }
  12. //-->
  13. </script>
<script src=config.js></script>
<script>
loadJS("edit");
</script>
//根据传入的key,动态生成js加载语句
function loadJS(sKey) {
        var node = JSHash[sKey];
        for(var i =0;i < node.length; i ++) {
                document.writeln('<script src="https://tool.4xseo.com/article/117949.html'+node[i].url+'?version='+node[i].version+'"><\/script>');
        }
}
//-->
</script>

3. 在js文件做出变动之后,只要修改相应js的版本号即可.这样由于链接不一样了,就会对这个变动的js进行重新下载。其他js由于链接不变,所以仍旧使用缓存中的js.

免责声明:文章转载自《更新js缓存办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇windows process activation service不能安装或启动的解决办法Arduino ESP32 LITTLEFS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

7.模块化封装Storage实现缓存数据持久化

1.模块化封装Storage实现缓存数据持久化 1.在src目录下新建目录model,在model目录下新建js文件取名storage.js var storage={ set(key,value){ // 设置为本地缓存方法 localStorage.setItem(key,JSON.stringify(valu...

JS阻止默认行为

如果事件可取消,则取消该事件,而不停止事件的进一步传播。 语法 event.preventDefault(); 案例 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>ev...

JS三元表达式

JavaScript三元运算符的多种使用技巧  因为在对学习Vue.js中遇到三元运算符,作为一个新入门前端的小白,对js不是特别了解,所以只能进行知识点的捡要累积,下面对我学习到的  三元运算 来进行一下总结。   在之前我们会经常用到  if(){}else{} 的判断,在了解三元以后,感觉这是比  if else  简单很多的方法。     三元运...

点击a标签下载当前链接的图片&amp;amp;&amp;amp;js 通过 blob 类文件对象下载图片,修改图片保存的名字(兼容式写法)

若想点击a标签就下载当前链接的图片,首先必须文件是同源的,在a标签上增加download属性,才能触发点击下载的效果,若不同源的话则变成在当前页面打开该图片了。 若想要下载不同源的文件,有一种思路是将图片转为base64再赋值给a标签,这样点击后应该就能够下载了 问题:通过a标签下载图片,只有谷歌浏览器和火狐浏览器才支持 通过iframe的方式下载图片的时...

jquery----语法扩展(导入js文件)

简单使用 第一步,新建js文件 第二步,在js文件中添加 $.extend({ "GDP": function () { console.log("哈哈哈哈"); } }); 第三步,在html中使用   $.GDP()  即可 复杂(1,希望一些函数不可以被外部引用,不可以被修改$) (functi...

原生JS 和 JQ 获取滚动条的高度,以及距离顶部的高度

JQ:相对比较简便 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 : $(document).width(); 浏览器当前窗口...