首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Durandal缓存问题/版本控制策略

Durandal缓存问题/版本控制策略
EN

Stack Overflow用户
提问于 2013-04-25 21:50:13
回答 2查看 3.5K关注 0票数 16

对Durandal、js和html文件进行版本控制的好策略是什么?

我注意到,在开发过程中,必须禁用浏览器缓存才能在每次刷新时接收最新文件。在开发过程中,这是必须的。

然而,我担心的是,当我使用我的持续部署策略(每天部署多次)投入生产时,用户的浏览器将缓存我的应用程序的旧版本,这可能会导致不可预测的行为。

浮现在脑海中的方法是以某种方式对js和html进行版本化,以便在每个请求中嵌入一个版本号。但我不确定如何在Durandal框架内部实现这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-29 22:47:54

好的,这就是我要走的方向。基本上,有一些内置的要求来处理这一点。

在我的main.js的顶部,在对requirejs.config的调用中,我可以设置一个urlArgs属性,该属性将被附加到requirejs为模块所做的每个调用中。

代码语言:javascript
复制
requirejs.config({
    paths: {
        'text': 'durandal/amd/text'
    },
    urlArgs: 'v=1.0.0.0'
});

当我想强制生产用户获得一个新版本的requirejs模块时,我可以增加版本号,这将使浏览器缓存失效。

(在我的项目中,我有一种方法可以将包含主ASP.NET MVC程序集的程序集的版本号注入到此属性中,但这样做的代码会分散上面示例的简单性的注意力。)

希望这对某些人有帮助!

票数 27
EN

Stack Overflow用户

发布于 2013-08-24 02:03:43

对于.NET,将main-built.js文件作为脚本包添加到App_Start/BundleConfig中:

代码语言:javascript
复制
    public static void RegisterBundles(BundleCollection bundles)
    {
        //...
        bundles.Add(new ScriptBundle("~/Scripts/main-built").Include(
                "~/App/main-built.js"));
        //...
    }

在索引页面上引用脚本包:

代码语言:javascript
复制
    @if (HttpContext.Current.IsDebuggingEnabled)
    {
        <script type="text/javascript" src="~/Scripts/require.js" data-main="App/main"></script>
    }
    else 
    { 
        <!-- Remember to run the weyland optimizer to create the main-built.js -->
        @Scripts.Render("~/Scripts/main-built")
    }

只要你有默认的Web.Release.Config文件,Visual Studio将自动删除调试属性,同时在发布时缩小和版本化你的包。

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

https://stackoverflow.com/questions/16216574

复制
相关文章

相似问题

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