Jqueryの読み込みにCDNを使用しようとしています。 this の記事を読みましたが、これは非常に簡単なはずです。
私のスクリプトバンドルは次のように定義されています。
bundles.UseCdn = true;
bundles.Add(new ScriptBundle("~/bundles/jquery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js").Include(
"~/Scripts/jquery-{version}.js"));
私は次のようにページにそれを含めています:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
しかし、firebugを見ると、jqueryがlocalhostからロードされているようです。
Realeaseビルドとデバッグビルドの両方で試しました。私は何が欠けていますか?これは非常に簡単だと思います。ありがとう。
アプリケーションをdebug="false"
モードで実行するか、BundleTable.EnableOptimizations = true;
を使用します
実際、ASP.NET MVCの最新バージョンを使用する場合、@ RaviGadagのメソッドをより短く書くことができます。このように、フォールバックを自分でレイアウトに記述する必要はありません。
public static void RegisterBundles(BundleCollection bundles)
{
bundles.UseCdn = true;
var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.3.min.js";
var jqueryBundle = new ScriptBundle("~/bundles/jquery", jqueryCdnPath).Include("~/Scripts/jquery-{version}.min.js");
jqueryBundle.CdnFallbackExpression = "window.jQuery";
bundles.Add(jqueryBundle);
// ...
BundleTable.EnableOptimizations = true;
}
コンテンツ配信ネットワーク(CDN)で利用可能なjqueryバージョン: http://www.asp.net/ajax/cdn#jQuery_Releases_on_the_CDN_
デバッグモードになっていないことを確認してください。
bundles.Add(new ScriptBundle("~/bundles/jquery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js")
set BundleTable.EnableOptimizations = true;
//デバッグモードを使用する場合
リリースモードではjQueryがCDNから要求され、デバッグモードではjQueryのデバッグバージョンがローカルにフェッチされます。 CDNを使用する場合、CDN要求が失敗した場合のフォールバックメカニズムが必要です。
cDNリクエストが失敗した場合、コールバックを提供できます
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
var e = document.createElement('script');
e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")';
e.type = 'text/javascript';
document.getElementsByTagName("head")[0].appendChild(e);
}
</script>