jQuery バンドルを次のように設定しています。
var bundle = new ScriptBundle("~/bundles/jquery", "//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js");
// Path to the version of the file on your server (in case the CDN fails)
bundle.Include("~/scripts/jquery-{version}.js");
// JS expression to run, to test if CDN delivered the file or not
bundle.CdnFallbackExpression = "window.$";
bundles.Add(bundle);
Google PageSpeed Insights のスコアを上げるために、スクリプトを非同期で読み込むことにしました。
@Scripts.RenderFormat(@"<script src=""{0}"" async></script>", "~/bundles/jquery")
しかし今では、常に CDN フォールバック式に失敗し、スクリプトを 2 回読み込むことになります。フォールバック バンドルから 1 回、非同期呼び出しが終了したときに CDN から 1 回。フォールバック テストを実行するときに、CDN への非同期呼び出しが完了していないためだと思います。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js" async=""></script>
<script>(window.$)||document.write('<script src="/bundles/jquery"><\/script>');</script>
<script src="/bundles/jquery"></script>
フォールバック式を書くより賢い方法はありますか?
完全に良い解決策はありますか?
私は jQuery を一番下にロードしますが、それに依存するインライン呼び出しを壊してしまいます。