使用SeedStack 14.7在服务器上上传新版本时,我们面临一个缓存问题:每个用户都必须清除缓存才能获得文件的最后版本。
我试图在片段JSON文件的requireConfig部分中使用requireConfig。它通过在每个文件上添加参数来完成这项工作,因此我们可以在更改版本时使用它,但它也会影响每个模块配置中的urls!
在使用此配置将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,这种配置解决了缓存问题,但它也影响到片段中定义的其他模块,因此我需要找到另一种解决方案,以防止浏览器缓存文件。
发布于 2015-09-07 19:19:07
模块配置值(如示例中的apiUrl )不受RequireJS的影响,除非在它们上显式调用require.toUrl()。我想这就是你案子里发生的事。为了避免这个问题,您应该始终先进行连接,然后才对完整的结果URL调用require.toUrl()。
因此,与其做:
var fullUrl = require.toUrl(config.apiUrl) + '/my/resource';这样做:
var fullUrl = require.toUrl(config.apiUrl + '/my/resource');顺便说一下,与直接在RequireJS配置中设置版本不同,您可以简单地将应用程序的版本添加到母版页的<html>元素的data-w20-app-version属性中:
<html data-w20-app data-w20-app-version="2.0.0">这将提供相同的行为,但在$templateCache中的角模板情况下将正确工作。如果母版页是由后端自动生成的,则会自动完成。有关详细信息,请查看此页。
https://stackoverflow.com/questions/32091617
复制相似问题