2014-06-12 3 views
0

여기 내 상황은하나의 소스가 차단 된 경우 하나 이상의 JS/CSS 파일을로드하는 방법은 무엇입니까?

Google/jscdn.com과 같은 CDN에서 JavaScript를로드하는 웹 사이트를 만들고 있습니다. 그러나 그들 중 일부는 중국에서 완전히 막혔다. 그러나 내 방문객의 50 %는 중국 출신이며 다른 한 명은 다른 나라 출신입니다. 특정 소스가 차단 된 경우 소스를 하나 더로드 할 수 있습니까?

예를 들어 googleapis.com이 차단 된 경우 중국에서 액세스 할 수있는 lib.sinaapp.com에서로드합니다. 그리고 주어진 순서대로로드하고 싶습니다. googleapis.com을 먼저 시도한 다음 lib.sinaapp.com을 시도하십시오.

서버 측 코드없이이 작업을 수행 할 수 있습니까?

감사합니다.

+0

특별한 이유가 허용 된 하나에서 모두를로드 할 수있는 : 여기

은 YepNope와 귀하의 요구 사항의 간단한 구현이다? – AstroCB

답변

0

cdn 대체 기술을 사용할 수 있습니다.

예 :

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

멋진 기사에 대한 this가있다.

+0

이것은 매우 좋은 방법입니다. 그러나 문제는 CN 정부가 Google CDN 호스트를 차단하고 어떻게 든 요청이 보류 중이라는 것입니다. 그래서'$ ||를 실행하는데 아주 오랜 시간이 걸릴 것입니다. xxx' 코드. –

+0

불행히도 요청이 완료 될 때까지 요청의 성공 여부를 알 수있는 방법이 없습니다. 아마도 xx 초 후에 응답이 없으면 Google을 확인한 다음 시간이 초과되고 다른 URL로 전환하는 솔루션을 원할 것입니다. – Blazemonger

0

나의 제안 RequireJS 또는 YepNope같은 자바 스크립트 파일 로더를 사용하고 있습니다.

JavaScript 파일을 동적으로로드 할 수 있으며 파일로드시기를 제어 할 수 있습니다.

//assuming that your JavaScript file is script.js 
//put this flag in both script.js files 
var scriptLoaded = true; 

//put this in your main JS file 
yepnope([{ 
    load: 'http://googleapis.com/123/script.js', //load this one first 
    complete: function() { 
    if (!scriptLoaded) { 
     yepnope('http://lib.sinaapp.com/123/script.js'); //if not already loaded, load this file 
    } 
    } 
}]);