requirejs缓存问题比较严重。
加上
requirejs.config({
urlArgs: "bust=" + (new Date()).getTime()
});
之后,缓存没有了,相当于所有js都加了这个,但是这样缓存没有,每次都需要请求。
如果不加,假如a.js b.js c.js三个文件,a.js修改了,b.js c.js没有修改。这样请求的时候,刚刚修改的a.js是之前的缓存文件。怎么解决呢?
requirejs缓存问题比较严重。
加上
requirejs.config({
urlArgs: "bust=" + (new Date()).getTime()
});
之后,缓存没有了,相当于所有js都加了这个,但是这样缓存没有,每次都需要请求。
如果不加,假如a.js b.js c.js三个文件,a.js修改了,b.js c.js没有修改。这样请求的时候,刚刚修改的a.js是之前的缓存文件。怎么解决呢?
require应该有个alias的设置,是可以针对文件设置别名的,应该可以添加?t=xxx这样的参数。
到底有没有,我不知道的哈,很久没用它了。
多说一句,如果是文件修改,可以通过一些gulp,grunt插件,通过文件内容md5的方式重命名,并全局替换。当然这种一般是在代码部署的时候处理。
呃... 你采纳的答案............ 其实我想说:requirejs
是支持的
require.config({
//版本号 => 日期
urlArgs: 'v=151120',
//线上CDN
baseUrl: '你的url',
//配置路径
paths: {
//可以配置单独模块的版本号更新的...
'service': 'service.js?v=1'
}
});
10 回答11.4k 阅读
4 回答3.3k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
4 回答2k 阅读✓ 已解决
修改了requirejs的源码,然后问题解决了。
在对应的位置添加如下代码:
然后在底部写入:
requirejs.yhpzReditJs这个里面写的是所有js文件的名字及版本号,如果修改了某js文件,需要修改下版本号。
整体上算是解决了,项目小。
这种解决方法存在的问题:
1,版本号需手动更改,比较麻烦。
2,文件存在重命名问题。比如a目录下的touch.js 跟 b目录下的touch.js,这个会存在问题。
3,这个修改方案需要单独列出来,成为一个模块。然后单独调用。