2014-01-30 1 views
1

필자가 볼 수 있듯이, 사이트를로드 할 때마다 jQuery를로드하는 것은 꽤 느립니다. 즉jQuery에서 특정 기능을 실시간으로로드하는 방법이 있습니까?

<!-- jQuery --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

로컬 파일 시스템에 jQuery를 다운로드하고 로컬로 가져 오는 것과 비교합니다. 즉

<!-- jQuery --> 
<script type="text/javascript" src="js/jquery-someversion.min.js"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

분명히 스크립트를로드 할 때 인터넷 속도에 따라 다릅니다.

HTML 스크립트 태그를 사용하여 (jQuery) "게으른로드"를 허용하는 jQuery API가 있는지 궁금합니다. 내가 게으른 로딩 jQuery를 함께 의미하는 것은 :로드에만 특정 기능 (들) 내가

<!-- jQuery --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js/events"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

소스 변경 즉, 사용하려고 해요 : < 스크립트 .... SRC = "HTTP를 : // code.jquery.com/jquery-latest.min.js/ 이벤트 "/>

내가 특정 기능의 jQuery를 코드를 찾아 볼 수 있다는 사실을 알고 필요할 때 자신을로드하지만 I jQuery에 업데이트가있을 때마다 기능을 내 로컬 파일 시스템에 복사하지 마십시오. 아직도 내가 가고있는 곳을 얻지 못한다면, 내가 원하는 것은 기능이 최신이고 지원되는 (jQuery에 의해) 그래서 나중에 버그 수정/개선/변경/추가/교차하는 방법을 알고 싶다는 것입니다. jQuery에 대한 -browser-support가 "자동으로"내 사이트에 구현되었습니다.

+0

"속도가 느릴 수 있지만 느린"* 처음 * 시간입니다. 또한 (항상 최신 버전을 가져 오는 대신) 실제 버전을 사용하는 경우 시간 초과가 곧 만료되지 않도록 캐싱을 향상시킬 것입니다. (분명한 이유로, "최신"버전이기 때문에 캐시가 오래 걸릴 수 없습니다.) –

+0

'// ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'는 HTTP 압축 후 * 32.5KB *이고 * 매우 캐시 가능 *입니다. 아마도 처음에는 제거 할 다른 성능 문제가 있다고 생각합니다. – user2864740

+0

BUG 수정으로 생산 코드가 깨질 때보 다 ... – epascarello

답변

2

cdn 경로를 사용하는 경우 이전에 캐시 된 파일을 다시 다운로드하지 않습니다. 캐시 히트 가능성을 높입니다. (더 많은 사이트에서이 방법을 따르므로 더 많은 사용자가 이미 파일을 준비했습니다.)

1

당신은 그렇게 말하지 않습니다! jQuery의 크기는 32KB에 불과합니다!

http://code.jquery.com/jquery-latest.min.js

당신은 하나보다 여러 파일을로드 에게 더 많은 시간을 보낸 것입니다. 또한 JS와 CSS 파일을 모두 하나의 JS와 하나의 CSS 파일로 병합하는 것이 좋습니다.

+0

Nit : ~ 90KB, HTTP 압축으로 ~ 32KB까지 내려갑니다. – user2864740

+0

그래서 뭐? :-) 추신 HTTP 압축은 아니지만 gzip ;-) – Oleg

2

당신은 입니다. 항상은 느린 속도가 되려고합니다. jquery-latestjquery-version - 서버가 적용합니다. 예를 들면 :

http://code.jquery.com/jquery-latest.min.js

jquery-latest headers

http://code.jquery.com/jquery-1.10.2.min.js

보낸 매우 미래 일자 Expires 헤더 지금이 있음을

enter image description here

참고. 즉, 첫 번째 페이지가로드되면 브라우저는이 버전을 매우 오랫동안 캐시하여 후속 페이지 호출에 대기 시간이 거의 없음을 의미합니다.

그러나 최신 정보로 유지하면 브라우저가 모든 페이지로드에 대해 에 대해이 파일을 가져와야합니다. 물론 대기 시간이 추가 될 것입니다.내가 원하는

내가 기능이 최신 및 (jQuery를에 의해) 지원되는 것을 알 수있는 방법으로 jQuery를 너무 나중에 버그 수정/개선/변경/추가/크로스 브라우저 지원을하는 것입니다 내 사이트에 "자동으로"구현됩니다. 더 이상 작동하고 왜 $.browser, .die() 또는 .live를 사용하여 뭔가를 쓸 때를 제외하고

는 궁금하지 않습니다.

몇 분을 소비하고 JS 파일을 업데이트 할 때 (특히 사이트가 어제 작동했음을 의미하고 오늘은 아니며 이유를 알 수없는 경우) 말하면 무언가가 있습니다.

+1

"최신"릴리스조차도 매우 빠르게 변하지 않습니다. 리소스 URL에 대한 업데이트로 충분합니다 (새 리소스의 캐시 기간이 길어지고 서버가 올바르게 구성). 물론 CDN을 사용하면 전역 캐싱에 도움이됩니다. – user2864740

+0

@ user2864740 : 파일 자체가 아니라 브라우저가 캐싱을 관리하는 방식입니다. 또한, 최신 상태를 유지하고 적극적으로 사용 중지 된 항목에서 제거 된 항목으로 (결국) 실행하도록 실행하려고합니다. –

+0

오, 나는 어떤 의미에서 (자동 릴리스) 이상의 (자동 릴리스) 이상의 찬성하지 않습니다. – user2864740

2

자신 만의 jQuery 빌드를 만들 수 있지만 직접 만들어야합니다.

이 지침은 "How to build your own jQuery" guide를 따르

특별 jQuery를 기능의 하위 집합을 제외이 생성 될 수있다 빌드. 이것은 빌더가 jQuery의 해당 부분이 사용되지 않는다고 확신 할 때 더 작은 사용자 정의 빌드를 허용합니다. 예를 들어 $ .ajax()에 JSONP 만 사용하고 요소의 오프셋 또는 위치를 계산할 필요가없는 앱은 오프셋 및 ajax/xhr 모듈을 제외 할 수 있습니다.

+0

쿨 읽기, 결코 알지 못했습니다. 어쨌든 모듈 X가 절대로 필요하지 않은 매우 제한된 시스템에서이 작업을 수행 할 수는 있지만 jQuery를 "동적으로로드 가능한"모듈로 분해하면 안됩니다. 단지 악몽처럼 보일뿐입니다. 모든 것을 다시 함께 꿰매십시오). – user2864740

+0

작은 예제를 제공해 주시겠습니까? – camou

관련 문제