jQuery를 로컬로 호스팅 할 때의 이점 대 함정 [닫기]


85

현재 Google CDN에서 jQuery 및 jQueryUI (및 jQueryUI CSS) 라이브러리를 가져오고 있습니다. 전화를 걸 수 google.load("jquery", "1");
있고 최신 jQuery 1.xx가 사용 되기 때문에 이것을 좋아합니다 .

이제 보안 때문에 라이브러리를 로컬로 가져옵니다.

나는 그들을 로컬로 가져 와서 기쁘지만 조심해야 할 다른 이점과 함정이 무엇인지 궁금합니다.


5
어떤 보안 문제에 대해 이야기하고 있습니까?
Ascherer

나는 묻지 않았다. 나는 그것이 너무 많은 보안 아니다 추측하지만 방화벽의 Gmail 등으로 제어 대역폭에 노력하고있어
orolo

답변:


109

CDN에 포함 된 주요 이점은 파일을 자신의 웹 사이트에서 다운로드 한 파일과 병렬로 다운로드 할 수 있다는 것입니다. 이렇게하면 모든 페이지의 지연 시간이 줄어 듭니다. 따라서 이것의 반대면은 로컬 호스팅으로 인한 지연 시간 증가 의 함정입니다 . 그 주된 이유는 브라우저가 동일한 웹 도메인에 동시에 만들 수있는 연결 수가 제한되어 있기 때문입니다. IE6에서 이것은 동일한 도메인에 대한 2 개의 동시 연결로 기본 설정되었습니다. IE의 모든 열린 창간에 공유됩니다 !! IE8 +에서는 개선되어 FF / Chrome과 인라인 인 6으로 기본 설정되었지만 여전히 이미지가 많고 스프라이트를 사용하지 않는 경우 지연 시간이 길어질 것입니다.

CDN을 사용하면 항상 최신 버전을 가져 오는 대신 라이브러리 버전을 명시 적으로 설정했습니다 . 이렇게하면 새 버전이 코드를 손상시킬 위험이 줄어 듭니다. jQuery에서는 그다지 가능성이 없지만 가능합니다.

CDN 사용의 또 다른 주요 이점은 사이트의 트래픽 감소 입니다. GB 당 비용을 지불하거나 리소스가 제한된 가상 서버를 사용하는 경우 일부 콘텐츠를 공용 CDN으로 팜 오프 할 때 전체 사이트 성능이 향상되고 호스팅 비용이 감소 할 수 있습니다.

이 질문에 대한 @Xaver의 다른 답변도 읽으십시오. 이것은 아주 좋은 속임수입니다


5
라이브러리 버전을 명시 적으로 설정하는 또 다른 이점은 Google이 더 긴 캐시 시간을 제공한다는 것입니다. 똑같다).
Barry

uhhh- revaxarts ? 나는 그러한 대답을 볼 수 없으며 현재 또는 삭제되지 않았습니다. "매우 좋은 속임수"는 무엇입니까?
ashleedawg 19-06-25

144

저는 항상 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>

4
커뮤니티에 대한 크레딧 : stackoverflow.com/questions/1014203/…
oucil

24
XVIDEOS 이제이 솔루션을 사용 : P
쇼고의 타테 Makishima

여기에 뭔가 빠졌 나봐요 ...이 접근 방식은 CDN로드 jQuery가로드되고 다음 줄 ( !window.jQuery...)이 해석 되기 전에 해석 될 것이라고 가정하지 않습니까? <script>태그는 비동기 적으로 처리됩니다. 그렇죠?
rinogo

2
<script>태그는 동 기적으로 처리됩니다! 두 번째 줄에서 jQuery는 이미로드되어 있어야하지만 그렇지 않은 경우 로컬로로드하기 위해 일부 JS를 주입해야합니다. 는 document.writejQuery를이 이미 존재하는 경우 실행되지 않습니다.
Xaver

24

다른 사람들이 혜택을 제공했습니다. 함정 :

  • 자체 서버의 콘텐츠 만 포함하는 경우 사이트가 작동하도록하려면 방화벽 등으로 차단되지 않고 실행되어야하는 하나의 서버입니다. 타사에서 스크립트를 가져 오면 이제 사이트가 작동하도록 실행 및 차단 해제해야하는 두 개의 서버가 있습니다.

  • <script>가져온 모든 사이트는 사이트 에서 사용자의 경험을 완전히 제어 할 수 있습니다. Google이 악의적이라고 느끼면 jQuery 사본에 무언가를 넣어 키 누르기를 기록하고, 현재 페이지에서 개인 정보를 훔쳐 웹 추적 데이터베이스에 연결하고, "I love Google!"을 게시하도록 할 수 있습니다. 모든 양식에 대한 주석 등.

Google은 실제로 그렇게하지 않을 것입니다. 그러나 그것은 당신이 통제 할 수없는 요소이며 다른 스크립트 호스팅 서비스에 대해 확실히 걱정할 것입니다. 이전에 멀웨어 로더로 인해 통계 스크립트가 손상된 사고가있었습니다.

타사의 스크립트를 포함하기 전에 (사이트의 한 페이지에도) 해당 호스트 이름에서 볼 수있는 모든 사용자 액세스 가능 기능 (웹 관련 관리 기능 포함)으로 스크립트를 100 % 신뢰해야합니다.


21
Google은 그렇게하지 않을 것입니다 ... I LOVE GOOGLE ... 그럴까요? - P
JasCav

1
보안 문제에 관한 우수 포인트.
Naltroc 2016 년


1
좋은 점 : 원격 CDN 스크립트가 해킹되어 내 사이트로 내려 오는 방법에 대해 생각해 본 적이 없습니다. 아마도 jQuery, jQueryUI, Boostrap 등과 같은 주요 라이브러리에서는 일반적이지 않지만 앞서 언급했듯이 더 작고 덜 지원되는 라이브러리는 특히 최신 상태로 유지되지 않는 경우 피해자가 될 수 있습니다. Good points +1
twknab

14

Google CDN :

  • 캐싱, 성능 향상, 이미 보유하고있을 가능성이 높은 사용자, 병렬 다운로드
  • 그렇다면 heaver forbid cdn이 다운됩니다. 너는 망했어.
  • 새 버전이 기존 플러그인이나 사이트를 망가 뜨리면 너무 늦게 알게 될 것입니다.

장소 상에서:

  • 인터넷에 연결하지 않고 개발이 가능
  • 축소하는 것 외에도 gzip으로 일부 성능 이점을 얻을 수 있습니다.

5
그러나 Google의 cdn에서 jquery u로드가 축소됩니다.
cdn

if a new version breaks your existing plugins or site, you'll know about it possibly too late이를 방지하기 위해 CDN 링크에 버전을 지정할 수 있습니다.
Adam

13

나는 그들이 제공 할 것에 대한 통제권이 없기 때문에 내 로컬 버전을 사용하는 것을 선호합니다. 예를 들어, 우리나라의 법적 문제이기 때문에 사용자가 google-analytics 또는 이와 유사한 것의 영향을받는 것을 원하지 않습니다.


9

이점 : (특히 Google의 CDN)

  1. 파일과 동시에 다운로드합니다. 다른 답변은 이것을 더 다룹니다.
  2. Google의 서버는 물리적으로 콘텐츠를 더 빠르게 전달할 수 있습니다.
  3. CDN에 대한 HTTP 캐시는 모든 사이트에서 보편적 이므로 공통 라이브러리와 프레임 워크가 이미 사용자 컴퓨터에있을 수 있습니다.
  4. 대역폭이 큰 라이브러리 파일을 제공하는 데 갈 필요가 없습니다.

2

거의 모든 방식으로 Google의 CDN을 사용하는 것이 좋습니다.

성능이 향상되고 (사이트가 실제로 바쁜 경우가 아니라면 상당히 미미할지라도) 서버가 전송해야하는 데이터의 양이 감소 할 것입니다 (jQuery는 정확히 다운로드해야하는 것은 아닙니다).

사용하고 싶지 않은 유일한 이유는 Google을 신뢰하지 않는 경우입니다. 이를 사용함으로써 귀하는 공개하지 않을 수있는 URL (예 : 사이트의 보안 영역)에 대한 지식을 포함하여 사이트의 트래픽 프로필에 대한 추가 정보 창을 Google에 효과적으로 제공 할 수 있습니다.

보안에 대한 편집증이있는 경우이를 사용하지 않도록 설득하기에 충분할 수 있지만 (결국 직접 호스팅하는 것이 사이트를 크롤링하는 속도를 늦추지는 않습니다) 일반적으로 대부분의 사람들은 실용적 관점을 취합니다. Google은 이미 사이트에 대해 충분히 알고 있으며이를 추가해도 큰 차이는 없습니다.


1

아마도 나는 요즘 소수에 속하지만 정말로 필요하지 않는 한 CDN을 사용하고 싶지 않다고 말하고 싶습니다. 사용을 시작하는 핵심 요소는 다음과 같습니다.

  • 교차 지역 사용자. 미국에서 웹 사이트를 호스팅하지만 유럽 사용자가 눈에 띄는 경우 CDN은 로딩 시간을 개선합니다.
  • 많은 사용자 및 / 또는 콘텐츠가 많으므로 하나의 메인 서버로는 더 이상 충분하지 않습니다. 포르노 비디오 웹 사이트 (또는 원하는 경우 Netflix)를 생각할 수 있습니다. 비디오 스트림은 부하가 높으며 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 링크를 제거할까요? ;)


0

나에게 그것은 당신이 원하는 정도의 통제력에 달려 있습니다. 당신이 나와 같고 일하고 여행 할 때 현지 호스트에서 개발해야하는 경우. jquery 파일을 로컬에 두는 것이 Google이나 다른 곳에서 호스팅하는 것보다 낫습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.