[英]Caching issue js files using requirejs
我一直在缓存的js文件中遇到问题,这导致用户没有最新的js,并且浏览器在文件上出现js错误,而文件中找不到js错误。
我的requirejs(版本2.3.6)设置如下:
<script src="{% static 'main/js/require.js' %}"></script>
<script>
function requireConfig(urlArgs) {
requirejs.config({
baseUrl: '/static/main/js/',
urlArgs: urlArgs,
waitSeconds: 15,
packages: [{
name: 'moment',
location: '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0',
main: 'moment'
}],
paths: {
// vendors
'jquery': '//cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min',
'jquery_ui': '//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min' ,
'text_contrast': './vendors/text_contrast',
},
shim: {
'jquery_ui': {
deps: ['jquery']
},
'text_contrast': {
exports: 'hex',
},
}
});
}
</script>
<script type="text/javascript">
requireConfig("bust=v18");
require(['platform/init'], function (m) {
m.init({
debug: {{ debug|yesno:"true,false" }},
});
});
</script>
我在结束正文标签之前添加了此标签。 每当用户在清除缓存后刷新页面时,所有带有bust参数的(新)js文件都会正确加载。 问题是,每次部署一些新的js时,我都无法强迫用户清除其缓存。
更新资料
如果我将+(new Date()).getTime()
到requireConfig函数中,文件现在将获得time参数,这似乎可以正常工作。 但是在某些URL上,浏览器仍然在错误的路径下查找js文件。 例如,当我转到一个URL时,它会加载:
/static/main/js/text_contrast.js?bust=v181560938449189
给出404。清除缓存并重新加载后,文件位于:
/static/main/js/vendors/text_contrast.js?bust=v181560939213670
这似乎发生在我过去已经加载的URL上,该错误路径指向text_contrast.js
文件
您可以将时间戳记添加到requirejs.config对象中的urlArgs,以便不会缓存url。
您可以通过以下方法更改代码之一
requireConfig("bust=v18");
至
requireConfig("bust=v18"+(new Date()).getTime());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.