首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用RequireJS在SeedStack中防止Javascript文件中的浏览器缓存问题

用RequireJS在SeedStack中防止Javascript文件中的浏览器缓存问题
EN

Stack Overflow用户
提问于 2015-08-19 09:29:29
回答 1查看 479关注 0票数 2

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

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

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

我的片段JSON文件:

代码语言:javascript
复制
{
    "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,这种配置解决了缓存问题,但它也影响到片段中定义的其他模块,因此我需要找到另一种解决方案,以防止浏览器缓存文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-07 19:19:07

模块配置值(如示例中的apiUrl )不受RequireJS的影响,除非在它们上显式调用require.toUrl()。我想这就是你案子里发生的事。为了避免这个问题,您应该始终先进行连接,然后才对完整的结果URL调用require.toUrl()

因此,与其做:

代码语言:javascript
复制
var fullUrl = require.toUrl(config.apiUrl) + '/my/resource';

这样做:

代码语言:javascript
复制
var fullUrl = require.toUrl(config.apiUrl + '/my/resource');

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

代码语言:javascript
复制
<html data-w20-app data-w20-app-version="2.0.0">

这将提供相同的行为,但在$templateCache中的角模板情况下将正确工作。如果母版页是由后端自动生成的,则会自动完成。有关详细信息,请查看此页

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32091617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档