0

SquishIt フレームワークを使用して、js および css ファイルをバンドルおよび縮小するためのバンドルおよび拡大機能に取り組んでいます。

以下のコードを使用しています。

<%= Bundle.JavaScript()
        .Add("~/js/jquery-1.4.2.js")
        .Add("~/js/jquery-ui-1.8.1.js")
        .Render("~/js/combined_#.js")
%>

上記のコードは、Web サーバーが 1 つしかない場合にうまく機能します。出力ファイル名に _#" を追加すると、webfarm で問題が発生するかどうかを知りたいです。問題が発生する場合、問題を解決するための最善の解決策は何ですか。

webfarm シナリオでの問題の発生に関する詳細を知るために、誰でも助けてくれますか?

よろしくお願いいたします。 サントッシュ・クマール・パトロ

4

1 に答える 1

0

これにより、ロード バランサーでスティッキー セッションが有効になっていない場合に問題が発生する可能性があります。ビューでファイルをレンダリングしているため、ファイルはサーバー 1 でレンダリングされる可能性があり、アセットの要求は実際にはサーバー 2 にルーティングされますが、そこではファイルがまだ作成されていない可能性があります。

Web ファームのシナリオでは、Application_Start でバンドルを作成し、キャッシュされた/名前付きのメソッドのいずれかを使用してビューでレンダリングするのが最善だと思います。

したがって、代わりに静的ファイルへのレンダリングを続けたい場合は、application_start (global.asax.cs) またはダウンストリーム (SquishIt 用の特殊な初期化子が好きです) に次のようなものがあります。

Bundle.JavaScript()
    .Add("~/js/jquery-1.4.2.js")
    .Add("~/js/jquery-ui-1.8.1.js")
    .RenderNamed("bundleName", "~/js/combined_#.js") //2nd arg is used to resolve disk location

次に、ビューでレンダリングします。

<%= Bundle.JavaScript().RenderNamed("bundleName") %>

これにより、サーバーが要求に応答する準備ができるまでにファイルが作成されていることが保証されますが、アプリケーションの起動時間が長くなります (アプリ プールが頻繁にリサイクルされないようにしてください!)。

バンドルが見つからない場合に回復する機会が得られるため、アセット コントローラーの方法の方が適している可能性があります。ここでそれについて読むことができます: https://github.com/jetheredge/SquishIt/wiki/Using-SquishIt-programmatically-without-the-file-system

最後に、CDN を使用することも適切なオプションです。ここで(Amazon S3 / Cloudfrontを使用しますが、アイデアはどのCDNにも当てはまります)それについて読むことができます:http://blogs.lessthandot.com/index.php/WebDev/ServerProgramming/making-squishit-work-with-アマゾン

于 2014-01-08T14:24:17.250 に答える