繁体   English   中英

使用requirejs缓存问题js文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM