현재 Google CDN에서 jQuery 및 jQueryUI (및 jQueryUI CSS) 라이브러리를 가져오고 있습니다. 전화를 걸 수 google.load("jquery", "1");
있고 최신 jQuery 1.xx가 사용 되기 때문에 이것을 좋아합니다 .
이제 보안 때문에 라이브러리를 로컬로 가져옵니다.
나는 그들을 로컬로 가져 와서 기쁘지만 조심해야 할 다른 이점과 함정이 무엇인지 궁금합니다.
현재 Google CDN에서 jQuery 및 jQueryUI (및 jQueryUI CSS) 라이브러리를 가져오고 있습니다. 전화를 걸 수 google.load("jquery", "1");
있고 최신 jQuery 1.xx가 사용 되기 때문에 이것을 좋아합니다 .
이제 보안 때문에 라이브러리를 로컬로 가져옵니다.
나는 그들을 로컬로 가져 와서 기쁘지만 조심해야 할 다른 이점과 함정이 무엇인지 궁금합니다.
답변:
CDN에 포함 된 주요 이점은 파일을 자신의 웹 사이트에서 다운로드 한 파일과 병렬로 다운로드 할 수 있다는 것입니다. 이렇게하면 모든 페이지의 지연 시간이 줄어 듭니다. 따라서 이것의 반대면은 로컬 호스팅으로 인한 지연 시간 증가 의 함정입니다 . 그 주된 이유는 브라우저가 동일한 웹 도메인에 동시에 만들 수있는 연결 수가 제한되어 있기 때문입니다. IE6에서 이것은 동일한 도메인에 대한 2 개의 동시 연결로 기본 설정되었습니다. IE의 모든 열린 창간에 공유됩니다 !! IE8 +에서는 개선되어 FF / Chrome과 인라인 인 6으로 기본 설정되었지만 여전히 이미지가 많고 스프라이트를 사용하지 않는 경우 지연 시간이 길어질 것입니다.
CDN을 사용하면 항상 최신 버전을 가져 오는 대신 라이브러리 버전을 명시 적으로 설정했습니다 . 이렇게하면 새 버전이 코드를 손상시킬 위험이 줄어 듭니다. jQuery에서는 그다지 가능성이 없지만 가능합니다.
CDN 사용의 또 다른 주요 이점은 사이트의 트래픽 감소 입니다. GB 당 비용을 지불하거나 리소스가 제한된 가상 서버를 사용하는 경우 일부 콘텐츠를 공용 CDN으로 팜 오프 할 때 전체 사이트 성능이 향상되고 호스팅 비용이 감소 할 수 있습니다.
이 질문에 대한 @Xaver의 다른 답변도 읽으십시오. 이것은 아주 좋은 속임수입니다
저는 항상 Google의 CDN (Content Delivery Network)을 사용합니다. 하지만 오프라인 일 경우 :
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="jquery-1.4.2.min.js"><\/script>')</script>
Google CDN의 jQuery를 잡고 필요한 경우 로컬로 대체
편집 : IE6를 지원할 필요가없고 사이트에 부분적인 https 사용이있는 경우 http도 제거 할 수 있습니다.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
!window.jQuery...
)이 해석 되기 전에 해석 될 것이라고 가정하지 않습니까? <script>
태그는 비동기 적으로 처리됩니다. 그렇죠?
<script>
태그는 동 기적으로 처리됩니다! 두 번째 줄에서 jQuery는 이미로드되어 있어야하지만 그렇지 않은 경우 로컬로로드하기 위해 일부 JS를 주입해야합니다. 는 document.write
jQuery를이 이미 존재하는 경우 실행되지 않습니다.
다른 사람들이 혜택을 제공했습니다. 함정 :
자체 서버의 콘텐츠 만 포함하는 경우 사이트가 작동하도록하려면 방화벽 등으로 차단되지 않고 실행되어야하는 하나의 서버입니다. 타사에서 스크립트를 가져 오면 이제 사이트가 작동하도록 실행 및 차단 해제해야하는 두 개의 서버가 있습니다.
<script>
가져온 모든 사이트는 사이트 에서 사용자의 경험을 완전히 제어 할 수 있습니다. Google이 악의적이라고 느끼면 jQuery 사본에 무언가를 넣어 키 누르기를 기록하고, 현재 페이지에서 개인 정보를 훔쳐 웹 추적 데이터베이스에 연결하고, "I love Google!"을 게시하도록 할 수 있습니다. 모든 양식에 대한 주석 등.
Google은 실제로 그렇게하지 않을 것입니다. 그러나 그것은 당신이 통제 할 수없는 요소이며 다른 스크립트 호스팅 서비스에 대해 확실히 걱정할 것입니다. 이전에 멀웨어 로더로 인해 통계 스크립트가 손상된 사고가있었습니다.
타사의 스크립트를 포함하기 전에 (사이트의 한 페이지에도) 해당 호스트 이름에서 볼 수있는 모든 사용자 액세스 가능 기능 (웹 관련 관리 기능 포함)으로 스크립트를 100 % 신뢰해야합니다.
Google CDN :
장소 상에서:
if a new version breaks your existing plugins or site, you'll know about it possibly too late
이를 방지하기 위해 CDN 링크에 버전을 지정할 수 있습니다.
이점 : (특히 Google의 CDN)
거의 모든 방식으로 Google의 CDN을 사용하는 것이 좋습니다.
성능이 향상되고 (사이트가 실제로 바쁜 경우가 아니라면 상당히 미미할지라도) 서버가 전송해야하는 데이터의 양이 감소 할 것입니다 (jQuery는 정확히 다운로드해야하는 것은 아닙니다).
사용하고 싶지 않은 유일한 이유는 Google을 신뢰하지 않는 경우입니다. 이를 사용함으로써 귀하는 공개하지 않을 수있는 URL (예 : 사이트의 보안 영역)에 대한 지식을 포함하여 사이트의 트래픽 프로필에 대한 추가 정보 창을 Google에 효과적으로 제공 할 수 있습니다.
보안에 대한 편집증이있는 경우이를 사용하지 않도록 설득하기에 충분할 수 있지만 (결국 직접 호스팅하는 것이 사이트를 크롤링하는 속도를 늦추지는 않습니다) 일반적으로 대부분의 사람들은 실용적 관점을 취합니다. Google은 이미 사이트에 대해 충분히 알고 있으며이를 추가해도 큰 차이는 없습니다.
아마도 나는 요즘 소수에 속하지만 정말로 필요하지 않는 한 CDN을 사용하고 싶지 않다고 말하고 싶습니다. 사용을 시작하는 핵심 요소는 다음과 같습니다.
하지만 ... 요점은이 포인트가 전 세계 웹 사이트의 90 %에 적용되지 않는다는 것입니다. 전 세계 수백만 명의 온라인 사용자가있는 Facebook이 아니라고 확신합니다. 매초 수백 GB가 전송되는 Pornhub가 아닙니다.
귀하의 웹 사이트가 귀하의 도시 / 국가에있는 사용자를 대상으로하고 서버 한 대의 용량이 보유한 사용자 수에 충분하다면 CDN이 필요한 이유는 무엇입니까? 도시의 사용자는 더 빠르고 메인 서버에서 모든 것을 로컬로 가져 오는 것이 더 간단합니다.
일반적으로 CDN에 관한 것이 었으므로 이제 jQuery 또는 다른 라이브러리에 대한 실제 질문에 더 가까워졌습니다.
웹 사이트가 1 년 이상 유지 관리없이 액세스 가능하고 작동하도록하려면 로컬에 두십시오. 요즘 도서관은 당신이 따르고 싶지 않은 미친 템포로 업데이트되고 있습니다. 그리고 이전 버전은 결국 삭제됩니다. 또한 전체 라이브러리가 죽을 수 있습니다 (아마도 jQuery에는 적용 할 수 없음).
내 최근 경험에서-내가 유지 관리하는 웹 사이트에서 TinyMCE를 3.xx (2012 년)에서 5.xx (2019 년 봄)로 업데이트했습니다. 이 웹 사이트는 논리의이 부분에서 유지 관리없이 7 (7!) 년 동안 작동했습니다. 그 당시에는 "최소화"개념이 없었고 CDN은 지금처럼 일반적이지 않았습니다. 그러나 그들이 흔할지라도-지금부터 3-5-10 년 후에 무슨 일이 일어날 지 결코 알 수 없습니다. 일반적으로 웹 사이트를 유지 관리하지 않아도 웹 사이트가 살아남기를 원합니다. 그러나 오늘 CDN에서 jQuery를 가져 오면이 링크는 5 년 안에 끊어 질 수 있습니다 (아마도).
@Xaver가 제안한 CDN 및 로컬 버전으로의 대체 솔루션은 좋은 타협이 될 수 있습니다. 하지만 ... 아마도 CDN 링크를 제거할까요? ;)