【发布时间】:2015-01-22 19:12:07
【问题描述】:
我正在开发一个 Web 应用程序,该应用程序使用 System.Web.Optimization 库将大量 js 脚本打包成包。
为了减少第一批用户的响应时间,我在Application_Start 中准备了所有捆绑包并强制将它们添加到缓存中。当然,这增加了Application_Start 的时间作为回报。
我设法将GenerateBundleResponse() 的结果保存到文件中,然后将这些文件的内容加载到Application_Start 的缓存中,但它需要运行应用程序两次:第一次“冷”启动准备脚本和将它们保存到文件中,而第二个可以使用准备好的脚本并快速启动。
public abstract class FileBasedBundle : Bundle
{
public override BundleResponse GenerateBundleResponse(BundleContext context)
{
if (File.Exists(bundlePath))
{
var content = File.ReadAllText(bundlePath);
var fileList = GenerateFileList(context);
return new BundleResponse(content, fileList);
}
var response = base.GenerateBundleResponse(context);
File.WriteAllText(bundlePath, response.Content);
return response;
}
}
问题是:我如何准备一些实用程序或脚本中的捆绑包以部署在远程机器上,以免启动应用程序两次? System.Web.Optimization 是否有任何替代方案可以在 Web 应用程序上下文之外运行? 谢谢!
【问题讨论】:
标签: c# asp.net-mvc-4 bundle system.web.optimization