2011-01-04 7 views
13

이전에 jQuery를 CDN에서로드 한 경우 클라이언트를 확인해야합니까? 나는 다음과 같은 코드를 가지고 의미 : 나는하지만이 CDN에서로드 특별히 경우, jQuery를로드되었는지 확인하고 싶지 않아확인하는 방법?

if (jQuery.isLoadedFromCDN) 
//DoNothing 
else 
//load from internal resource 

참고.

문맥은 jQuery를 사용하는 내부 LAN 웹 응용 프로그램이 있다는 것입니다. LAN에서 jQuery를로드하는 것은 확실히 빠르지 만 이전에 CDN (아마도이 ​​경우)에서 다운로드 한 경우에는 사용하고 싶습니다. 그렇지 않으면 나는 CDN이 아닌 내부 자원에서 얻고 싶습니다. 대역폭 절약은 엄청 크지 않지만 기술적으로 가능한지 궁금합니다.

답변

0

내 지식에 대해서는 그렇게 할 수 없습니다. 2 가지 그러나 그것은 당신을 도울 수있는 마음에 점프 :

  1. 사용 Etags가 : 웹 서버 측에서 자원을 식별합니다. 이렇게하면 브라우저가 작동합니다 :로드 된 도메인과 관계없이 리소스가 이미로드되었는지 확인
  2. 로드 된 도메인 jQuery를 실제로 알고 싶다면 더미 AJAX 요청을 수행 할 수 있습니다. (A JSONP 요청을 할 때 당연히 제외) 당신은 당신의 라이브러리에서로드 된 동일한 도메인에서 AJAX 요청을 할 수 있습니다. 당신의 jQuery를 당신의 LAN 리소스에서로드 된 경우 그래서, 당신은 당신의 LAN의 웹 서버에 AJAX 요청에 trplies을 얻을 것이다, 그리고는 CDN을 배제.

는 희망이 도움이,

바트

난 당신이 jQuery를이 Google Libraries API에서로드 있는지 확인하고 추측하고있어
3

?

브라우저가 CDN 또는 LAN에서 jQuery를 캐시합니다. CDN의 이전 검색에서 이미 캐시에 있으면 LAN보다로드 속도가 빠릅니다. 당신의 위치에 이전 방문 또는 동일한 CDN을 사용하여 다른 사이트 중 하나에서 캐시에없는 있다면, 한 번만로드해야합니다 : 다음 방문은 캐시에서로드됩니다.

CDN과 LAN 사이의 jQuery URL을 분할하면 캐시에 두 개의 복사본이 생성됩니다. 브라우저 캐시가 의도 한대로 캐시하게하십시오. :)

1

이 그것을 수행해야합니다

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script> 
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.4.js"%3E%3C/script%3E'))</script> 

당신은 도메인에 위치해야합니다 대체, 경로를 적용해야합니다.

+0

1.4.4의 무엇이 잘못 되었나요?! – lonesomeday

+0

@lonesomeday : 그냥 내가 이전 소스에서 그 라인을 복사 한 것을 수정. – jAndy

+0

@jAndy unescape가 사용되지 않습니다! 당신은 더 나은 대안을 제안 할 수 있습니까? – equitharn