3

我有一个使用 require.js 的网络应用程序(除了几个 CDN 提供的资源)。我正在使用优化工具来创建一个“已发布”网站。

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

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

通常的解决方案是将 ?v=1.0 的查询字符串附加到脚本引用,但由于它们都是通过 require.js 处理的,因此无法这样做。

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

4

1 回答 1

1

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

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

对于 CSS 和图像,我也遇到了类似的情况。如果您的 Web 应用程序落后于 Apache,您可以在 mod_headers 模块中将缓存控制标头设置为 http 响应。就我而言,我的网络应用程序并不落后于 Apache。我直接打了Glassfish。所以我最终添加了一个 Servlet 过滤器,并在将其转发到过滤器链之前手动将缓存控制标头添加到每个 CSS 和图像响应中。之后,当 CSS 发生变化时,我只需在 HTML 中添加一个 url 参数,如下所示:

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

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

于 2012-10-19T18:55:45.340 回答