2014-12-16 5 views
3

MVC.Net 번들링 및 축소 기능을 사용하고 있습니다. 번들을 렌더링하는 페이지를로드 할 때 (예를 들어 JQuery를 사용하고있는 경우), 브라우저에서 CDN과 폴백 모두를 요청하여 웹 서버에 2 번 요청합니다. 서버는 분당 2000 건의 안타를받을 것으로 예상되므로 스크립트 요청을 절반으로 줄일 수 있다면 꽤 좋습니다. 그래서 내 질문입니다 : 왜 대체가 브라우저에 의해 요청하고 그것을 방지 할 수 있습니까? 여기 MVC.Net Cdn 콜백 대체 어쨌든

는 내 내 스크립트 호출 내 .cshtml에서 BundleConfig

 BundleTable.EnableOptimizations = true; 
    bundles.UseCdn = true; 
    var bundle = new ScriptBundle("~/bundles/JQueryCore", "//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js") 
    { 
     CdnFallbackExpression = "window.jquery" 
    }; 

    bundle.Include("~/Scripts/JQuery/jquery-2.1.1.js"); 
    bundles.Add(bundle); 

@Scripts.Render("~/bundles/JQueryCore")

생성 된 HTML은 다음과 같습니다 : 당신은 라이브러리에 맞게

<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"></script> 
<script>(window.jquery)||document.write('<script src="/bundles/JQueryCore"><\/script>');</script> 

답변

2

CdnFallbackExpression 요구 에 대한 테스트; window.jquery은 제 편지 케이스에서 벗어났습니다. 시도해보십시오.

jqueryBundle.CdnFallbackExpression = "window.jQuery"; // note 'Q'. 

이렇게하면 인라인 테스트가 수정되어 로컬 스크립트가 호출되지 않습니다.

+0

실망합니다. 나는 올바른 코드를 넣지 않았고, fallback 식은 실제로 "window.jQuery"입니다. 대답을 편집 할 것입니다. – TopinFrassi

+0

정말 'window.jquery'가 아닌가요? 그렇다면 'Q'를 대문자로 바꿔서 모두 수정해야합니다. –

+0

글쎄, 그게 다야. 엄청 고마워! 내 편집 (CdnFallbackExpression 테스트/소스)을 반영하도록 답변을 편집하고 싶을 수도 있습니다. – TopinFrassi