使用种子堆栈中的RequireJS防止Javascript文件上的浏览器缓存问题

使用种子堆栈中的RequireJS防止Javascript文件上的浏览器缓存问题,javascript,caching,seedstack,Javascript,Caching,Seedstack,使用SeedStack 14.7,在服务器上上载新版本时,我们面临一个缓存问题:每个用户都必须清除缓存才能获取文件的最后版本 我试图在片段JSON文件的requireConfig部分中使用“urlArgs”:“version=2”。它通过在每个文件上添加参数来完成工作,因此我们可以在更改版本时使用它,但它也会影响每个模块配置中的URL 当我们使用此配置将REST基本url传递给每个模块时,它会通过向基本url添加参数来中断所有REST请求 我的片段JSON文件: { "id": "mac

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

我试图在片段JSON文件的
requireConfig
部分中使用
“urlArgs”:“version=2”
。它通过在每个文件上添加参数来完成工作,因此我们可以在更改版本时使用它,但它也会影响每个模块配置中的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请求的情况下解决缓存问题


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

模块配置值,如示例中的
apirl
,除非调用
require.tour()
在它们上明确显示。我想这就是你的情况。为了避免这个问题,您应该总是先进行连接,然后才对完整的结果URL调用
require.toUrl()

因此,与其这样做,不如:

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

var fullUrl = require.toUrl(config.apiUrl + '/my/resource');
顺便说一下,您不必直接在RequireJS配置中设置版本,只需将应用程序的版本添加到母版页
元素的
data-w20-app-version
属性中即可:

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


这将提供相同的行为,但对于
$templateCache
中的角度模板,这将正常工作。如果您的母版页是由后端自动生成的,那么这将自动完成。查看详细信息

有人能帮我添加“seedstack”标签吗?我没有足够的声誉来创建它,但我可能需要它来提醒SeedStack团队我的问题谢谢Adrien的回答,我们正在使用生成的母版页,但我在HTML标记中没有看到任何数据-w20-app-version。此功能是否在14.7版中编码?如果没有,我将检查是否可以更新SeedStack版本或更改所有require.toURL()调用(没错,我们是在连接之前进行的)。该标记实际上是在14.7版本之后添加的。注意,我们只能讨论StackOverflow上的开源版本。不管是什么版本,如果你想让URL连接正常工作,你必须更新URL连接的方式。谢谢Adrien,我们将更新我们的URL连接。