ASP.NET MVC4の System.Web.Optimization バンドルを調べていますが、 CDNからのCSS ファイルとサーバーにローカルな他の CSS ファイルをどのように提供するのでしょうか?
それは可能ですか?
bundles.UseCdn = trueはコレクション レベルであり、個々のバンドルの設定ではないようです。
任意のガイダンスをいただければ幸いです。
ASP.NET MVC4の System.Web.Optimization バンドルを調べていますが、 CDNからのCSS ファイルとサーバーにローカルな他の CSS ファイルをどのように提供するのでしょうか?
それは可能ですか?
bundles.UseCdn = trueはコレクション レベルであり、個々のバンドルの設定ではないようです。
任意のガイダンスをいただければ幸いです。
ASP.NETサイトには、これに関するいくつかの情報があります。
次のコードは、ローカルのjQueryバンドルをCDNjQueryバンドルに置き換えます。
public static void RegisterBundles(BundleCollection bundles)
{
//bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
// "~/Scripts/jquery-{version}.js"));
bundles.UseCdn = true; //enable CDN support
//add link to jquery on the CDN
var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";
bundles.Add(new ScriptBundle("~/bundles/jquery",
jqueryCdnPath).Include(
"~/Scripts/jquery-{version}.js"));
// Code removed for clarity.
}
上記のコードでは、リリースモードのときにCDNからjQueryが要求され、デバッグバージョンのjQueryがデバッグモードでローカルにフェッチされます。CDNを使用する場合、CDNリクエストが失敗した場合のフォールバックメカニズムが必要です。レイアウトファイルの最後にある次のマークアップフラグメントは、CDNが失敗した場合にjQueryを要求するために追加されたスクリプトを示しています。
個人的には、jQuery、Knockout、またはその他のライブラリからコードをデバッグしていることはありません。私は常にCDNリソースをレイアウトで直接参照しています。自分でロールする必要のあるスクリプトはすべて、MVCフレームワークを使用してバンドルします。
私のサイトは通常次のようになります。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
@Scripts.Render("~/content/js/siteName")
現在のところ、CDN のサポートはバンドルごとのレベルのみです。現時点では、CDN からの個別のアセットとローカルのアセットを含むバンドルを作成することはできません。基本的には、または: ローカル サーバーのバンドルにフォールバックする cdn をバンドルに使用させるか、バンドル全体を CDN に置く必要があります。
更新: ただし、明確にするために、一部のバンドルを CDN に配置し、一部のバンドルをローカルに配置できます。これは、バンドル インスタンスの CdnPath によって制御されます。基本的に、個々のバンドルに CdnPath が設定されていない場合は、常にローカルで提供されます。