0

我正在开发一个 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 应用程序上下文之外运行?谢谢!

4

1 回答 1

2

可以试试这个捆绑器 - 编译和缩小 Less/Sass/Stylus/Css/JS/CoffeeScript/LiveScript 文件。

https://github.com/ServiceStack/Bundler

于 2015-02-19T19:04:30.707 回答