0

System.Web.Optimizationライブラリを使用してバンドルにパックされた多くのjsスクリプトを持つWebアプリケーションに取り組んでいます。

最初のユーザーの応答時間を短縮するために、すべてのバンドルを準備してApplication_Start強制的にキャッシュに追加します。もちろん、それApplication_Startはリターンの時間を増やしました。

の結果GenerateBundleResponse()をファイルに保存し、これらのファイルのコンテンツを のキャッシュにロードすることができApplication_Startましたが、アプリケーションを 2 回実行する必要があります。最初の「コールド」スタートではスクリプトを準備してファイルに保存しますが、2 回目は準備されたスクリプトを使用すると、非常に高速に起動します。

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;
    }
}

問題は、アプリケーションを 2 回起動しないようにするために、リモート マシンに展開するユーティリティまたはスクリプトでバンドルを準備するにはどうすればよいかということです。Web アプリのコンテキスト外で実行する System.Web.Optimization の代替手段はありますか? ありがとう!

4

1 に答える 1

2

このバンドラーを試してみてください - Less/Sass/Stylus/Css/JS/CoffeeScript/LiveScript ファイルをコンパイルして縮小します。

https://github.com/ServiceStack/Bundler

于 2015-02-19T19:04:30.707 に答える