在SeedStack中使用RequireJS防止Javascript文件的浏览器缓存问题
Prevent browser cache issue on Javascript files with RequireJS in SeedStack
使用SeedStack 14.7时,我们面临一个缓存问题,当在服务器上上传一个新版本:每个用户必须清除他们的缓存,以获得最新版本的文件。
我试图在片段JSON文件的requireConfig
部分使用"urlArgs": "version=2"
。它通过在每个文件中添加参数来完成这项工作,所以我们可以在更改版本时使用它,但它也会影响每个模块配置中的url !
当我们使用此配置将REST基本url传递给每个模块时,它会通过向基本url添加参数来中断所有REST请求。
My fragment JSON file:
{
"id": "mac2-portail",
"modules": {
"gestionImage": {
"path": "{mac2-portail}/modules/gestionImage",
"autoload": true,
"config": {
"apiUrl": "muserver/rest"
}
}
},
"i18n": {...},
"routes": {...},
"requireConfig": {
"urlArgs": "version=2",
"shim": {...}
}
}
有没有办法在不破坏REST请求的情况下解决缓存问题?
EDIT:它不是防止requires缓存所需脚本的副本。是的,SeedStack使用RequireJS和此配置解决缓存问题,但它也影响在片段中定义的其他模块,所以我需要找到另一个解决方案来防止浏览器缓存文件
模块配置值,如您的示例中的apiUrl
,不会被RequireJS触及,除非您显式地对它们调用require.toUrl()
。我认为这就是你的情况。为了避免这个问题,您应该总是先进行连接,然后再对完整的结果URL调用require.toUrl()
。
所以,不要这样做:
var fullUrl = require.toUrl(config.apiUrl) + '/my/resource';
这样做:
var fullUrl = require.toUrl(config.apiUrl + '/my/resource');
顺便说一下,您可以简单地将应用程序的版本添加到母版页的<html>
元素的data-w20-app-version
属性中,而不是直接在RequireJS配置中设置版本:
<html data-w20-app data-w20-app-version="2.0.0">
这将提供相同的行为,但在$templateCache
中的Angular模板中可以正常工作。如果您的母版页是由后端自动生成的,则这是自动完成的。请查看本页了解详情。
相关文章:
- 链接/按钮从子文件夹下载文件--浏览器只是浏览
- 没有办法显示“;上传面板”;,没有“;文件面板”;在ITHit AJAX文件浏览器中可见
- 使用CKEditor自定义文件浏览器,并使用ASP.Net MVC进行上传
- 如何执行 phantomjs 文件浏览器
- 用于TinyMCE的PDW文件浏览器 - 上传路径
- 文件浏览器 JWPlayer.
- 如何控制 CKEditor API 在哪里打开文件浏览器浏览网址的新窗口
- 更改可爱的文件浏览器以与任何jquery版本兼容
- Dropzone.js:自定义文件浏览器 - 添加已上传的文件
- HTML5 输入类型文件浏览器差异
- 在CKEditor中获取自定义文件浏览器的url
- 使用javascript与文件浏览器窗口交互
- 如何使用Javascript中的默认目录打开文件浏览器
- 制作Javascript文件浏览器
- 如何从点击文本显示文件浏览器,并在悬停文本时将鼠标光标更改为指针
- 具有特定路径的文件浏览器
- 如何使用java脚本或jquery从键盘触发文件浏览器
- Win10应用:扩展文件浏览器
- 动态添加/删除输入类型文件(浏览器字段)
- 如何将文件浏览器过滤到IE上的特定扩展名