Javascript 缓存破坏由Require.js优化的网站

Javascript 缓存破坏由Require.js优化的网站,javascript,caching,requirejs,Javascript,Caching,Requirejs,我有一个web应用程序,在整个过程中都使用require.js(除了一些CDN提供的资源)。我正在使用优化工具创建一个“已发布”网站 我担心的是,当发布新版本的web应用程序时,用户将无法获得更新的js文件,因为它们将被浏览器缓存 除非使用“urlArgs”配置选项,否则在开发应用程序时,问题非常明显 通常的解决方案是在脚本引用中附加一个?v=1.0的querystring,但由于它们都是通过require.js处理的,因此没有办法做到这一点 所以,我的问题是,当发布新版本时,如何确保客户端下载

我有一个web应用程序,在整个过程中都使用require.js(除了一些CDN提供的资源)。我正在使用优化工具创建一个“已发布”网站

我担心的是,当发布新版本的web应用程序时,用户将无法获得更新的js文件,因为它们将被浏览器缓存

除非使用“urlArgs”配置选项,否则在开发应用程序时,问题非常明显

通常的解决方案是在脚本引用中附加一个?v=1.0的querystring,但由于它们都是通过require.js处理的,因此没有办法做到这一点


所以,我的问题是,当发布新版本时,如何确保客户端下载新版本的js/css文件

如果您使用的是require.js,那么您必须在使用require对象之前设置“bust”urlArgs。像这样:

<script>
    var require = {
        urlArgs : "bust=" + releaseVersion
    };
</script>

var require={
urlArgs:“胸围=”+发布版本
};
对于CSS和图像,我也处于类似的情况。如果您的web应用程序支持Apache,则可以在mod_headers模块中将缓存控制头设置为http响应。就我而言,我的web应用程序并不落后于Apache。我直接击中了玻璃鱼。因此,我最终添加了一个Servlet过滤器,并在将其转发到过滤器链之前,手动将缓存控制头添加到每个CSS和图像响应中。之后,当CSS发生更改时,我只需在HTML中添加一个url参数,如下所示:

<... "main.css?version=release10" />


浏览器看到此URL更改并从服务器获取CSS。图像也是如此。对于JS,您必须更新“Bust”值

为什么不使用您提到的urlArgs选项呢?@SimonSmith urlArgs在优化时不能使用