1

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 を一番下にロードしますが、それに依存するインライン呼び出しを壊してしまいます。

4

1 に答える 1