对Durandal、js和html文件进行版本控制的好策略是什么?
我注意到,在开发过程中,必须禁用浏览器缓存才能在每次刷新时接收最新文件。在开发过程中,这是必须的。
然而,我担心的是,当我使用我的持续部署策略(每天部署多次)投入生产时,用户的浏览器将缓存我的应用程序的旧版本,这可能会导致不可预测的行为。
浮现在脑海中的方法是以某种方式对js和html进行版本化,以便在每个请求中嵌入一个版本号。但我不确定如何在Durandal框架内部实现这一点。
发布于 2013-04-29 22:47:54
好的,这就是我要走的方向。基本上,有一些内置的要求来处理这一点。
在我的main.js的顶部,在对requirejs.config的调用中,我可以设置一个urlArgs属性,该属性将被附加到requirejs为模块所做的每个调用中。
requirejs.config({
paths: {
'text': 'durandal/amd/text'
},
urlArgs: 'v=1.0.0.0'
});当我想强制生产用户获得一个新版本的requirejs模块时,我可以增加版本号,这将使浏览器缓存失效。
(在我的项目中,我有一种方法可以将包含主ASP.NET MVC程序集的程序集的版本号注入到此属性中,但这样做的代码会分散上面示例的简单性的注意力。)
希望这对某些人有帮助!
发布于 2013-08-24 02:03:43
对于.NET,将main-built.js文件作为脚本包添加到App_Start/BundleConfig中:
public static void RegisterBundles(BundleCollection bundles)
{
//...
bundles.Add(new ScriptBundle("~/Scripts/main-built").Include(
"~/App/main-built.js"));
//...
}在索引页面上引用脚本包:
@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将自动删除调试属性,同时在发布时缩小和版本化你的包。
https://stackoverflow.com/questions/16216574
复制相似问题