2

使用 SeedStack 14.7 在服务器上上传新版本时,我们面临缓存问题:每个用户都必须清除缓存才能获取最新版本的文件。

我尝试在片段 JSON 文件"urlArgs": "version=2"requireConfig一部分中使用。它通过在每个文件上添加参数来完成这项工作,因此我们可以在更改版本时使用它,但它也会影响每个模块配置中的 url!

当我们使用此配置将 REST 基本 url 传递给每个模块时,它会通过将参数添加到基本 url 来中断所有 REST 请求。

我的片段 JSON 文件:

{
    "id": "mac2-portail",
    "modules": {
        "gestionImage": {
            "path": "{mac2-portail}/modules/gestionImage",
            "autoload": true,
            "config": {
                "apiUrl": "muserver/rest"
            }
        }
    },
    "i18n": {...},
    "routes": {...},
    "requireConfig": {
        "urlArgs": "version=2",
        "shim": {...}
    }
}

在不破坏 REST 请求的情况下解决缓存问题的任何想法?

编辑:它不是从缓存所需脚本中防止 RequireJS的副本。是的 SeedStack 使用 RequireJS 并且这个配置解决了缓存问题,但它也会影响片段中定义的其他模块,所以我需要找到另一个解决方案来防止浏览器缓存文件

4

1 回答 1

3

除非您明确apiUrl调用它们,否则 RequireJS 不会触及模块配置值,就像您的示例中一样。require.toUrl()我认为这就是你的情况。为避免此问题,您应始终先进行连接,然后才调用require.toUrl()完整的结果 URL。

所以,而不是这样做:

var fullUrl = require.toUrl(config.apiUrl) + '/my/resource';

做这个:

var fullUrl = require.toUrl(config.apiUrl + '/my/resource');

顺便说一句,您可以简单地将应用程序的版本添加到母版页元素的data-w20-app-version属性中,而不是直接在 RequireJS 配置中设置版本:<html>

<html data-w20-app data-w20-app-version="2.0.0">

这将提供相同的行为,但在$templateCache. 如果您的母版页是由后端自动生成的,则会自动完成。检查此页面以获取详细信息。

于 2015-09-07T19:19:07.453 回答