jQuery 또는 Google CDN 용 Microsoft CDN? [닫은]


187

실제로 jquery 파일 또는 해당 문제에 대한 javascript 파일에 연결하는 데 사용하는 CDN이 중요합니까? 하나는 다른 것보다 잠재적으로 빠릅니까? cdn을 사용하기로 결정한 다른 요인은 무엇입니까? Microsoft, Yahoo 및 Google에 CDN이 모두 있다는 것을 알고 있습니다.

답변:


151

의견을 기반으로 업데이트 :

짧은 버전 : 별로 중요하지 않지만 호스팅 대상에 따라 달라질 수 있습니다. Google은 jQuery를 호스팅하지 않습니다 .Google은 jQuery-UI를 호스팅하지 않았습니다 .2016 년 이후로 Microsoft는 그렇지 않은 경우 제공되는 스크립트 ScriptResource.axd와 더 쉬운 통합 (예 : ASP 를 통한 ScriptManager)을 제공합니다. 순 4.0 ).

중요 사항 : 인트라넷 응용 프로그램을 구축하는 경우 CDN 접근 방식을 피하십시오. 당신이에 아니라면, 그것을 호스팅 누가 중요하지 않습니다 매우 내부적으로 과부하 서버, 더 CDN 당신에게 지역 100메가바이트 이상 / 1 기가 바이트 이더넷 것보다 성능을 제공하지 않습니다. 내부 응용 프로그램에 CDN을 사용하면 성능저하 됩니다. 캐시 만기 헤더를 올바르게 설정 하고 인트라넷 전용 시나리오에 존재하는 CDN은 무시하십시오.

막힐 확률은 거의 같고 거의 0 인 것 같습니다. 이것이 사실이 아닌 계약에서 일했지만 예외 인 것 같습니다. 또한이 답변을 처음 게시 한 이후로 주변 환경이 크게 바뀌면서 Microsoft CDN은 많은 진전을 이루었습니다.

현재 진행중인 프로젝트는 솔루션에 가장 적합한 두 CDN을 모두 사용합니다. 여기에는 몇 가지 요소가 있습니다. 오래된 브라우저를 사용하는 사용자 는 여전히 HTTP 사양에서 권장하는대로 도메인 당 2 개의 동시 요청을하고있을 것입니다 . 이것은 파이프 라이닝 (현재 모든 브라우저) 을 지원하는 괜찮은 새로운 것을 실행하는 사람에게는 문제가되지 않지만 다른 요인에 따라 적어도 자바 스크립트까지는이 제한을 없애고 있습니다.

우리가 사용하는 Google의 CDN :

우리가 사용하는 Microsoft의 CDN :

우리 서버 :

  • Combined.js? v = 2.2.0.6190 (주요 사소한 반복. 변경)

빌드 프로세스의 일부는 모든 사용자 정의 자바 스크립트를 결합하고 축소하는 것이므로 빌드에 따라 이러한 스크립트의 릴리스 또는 디버그 (최소화되지 않은) 버전을 포함하는 사용자 정의 스크립트 관리자를 통해이를 수행합니다. Google은 jQuery 유효성 검사 패키지를 호스팅하지 않기 때문에 단점이 될 수 있습니다. MVC는이를 2.0 릴리스에 포함 / 사용하므로 모든 요구 사항에 대해 Microsoft의 CDN에 전적으로 의존 할 수 있으며 ScriptManager를 통해 모든 CDN을 자동으로 사용할 수 있습니다.

다른 유일한 주장은 DNS 시간 일 것입니다. 페이지로드 속도 측면에서 이에 대한 비용이 있습니다. 평균 : 단순히 더 많이 사용 되었기 때문에 (더 오래 사용됨) 로컬 DNS 서버가 요청을받을 가능성이 높기 때문에 ajax.googleapis.comDNS보다 더 빨리 DNS에 의해 반환 될 가능성이 높습니다 ajax.microsoft.com(지역 벌금의 첫 번째 사용자). . 이것은 매우 사소한 일이며 밀리 초까지 성능이 매우 중요한 경우에만 고려해야합니다.
(예 :이 시점은 두 CDN을 모두 사용하는 것과 반대되는 것을 알고 있지만 우리의 경우 DNS 시간은 발생하는 자바 스크립트 / 차단의 대기 시간으로 인해 훨씬 ​​어둡습니다)

마지막으로, 그것을 보지 못했다면, 가장 좋은 도구 중 하나는 Firebug 이고 일부 플러그인은 Page SpeedYSlow 입니다. CDN을 사용하지만 캐시 헤더가 없기 때문에 페이지가 매번 이미지를 요청하는 경우 낮은 결단력이 없습니다. Firebug의 Net 패널을 사용하면 페이지로드 시간을 빠르게 분석 할 수 있으며 Page Speed ​​/ YSlow가 도움이되는 몇 가지 좋은 제안을 제공 할 수 있습니다.


26
차단 될 가능성이 적습니까? 나는 당신이 그 아이디어를 어떻게 생각해 냈는지 알고 싶습니다. MS 네트워크는 MS가 아닙니다. 구글보다 훨씬 오랫동안로드 밸런싱 서버를해온 사람은 아카 마이입니다. 실제로, 이와 같은 주장을한다면 약간의 증거가 좋을 것입니다.
blowdart

16
일부 회사에서는 필자가 Windows 업데이트 차단의 일부로 * .microsoft.com을 완전히 차단했습니다. 이 올바른지? 아뇨, 그런가요? 예. 예 : ajax.microsoft.com/...www 예외가 아닌 * .microsoft.com 블록에 속합니다. 회사가 www.microsoft.com 이외의 항목을 차단하면 차단됩니다. 나는 그것이 가능성이 높지 않다고 말하지 않았으며, 나는 구글이 차단 된 것을 보지 못했지만 그 반대를 보았 기 때문에 더 가능성이 있다고 말했다.
Nick Craver

5
정부 사이트에서 Gmail을 중지하기 위해 Google이 차단 된 것을 보았습니다. 그러나 매우 드물기 때문에이 경우에는 정당화하기 위해 거의 사용하려고하지 않습니다.
blowdart

19
이 문서가 작성된 이후로 MS는 jQuery-UI를 CDN에 추가했습니다. asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean

3
@Nick Microsoft는 CDN의 CDN을 ajax.microsoft.com에서 ajax.aspnetcdn.com으로 옮겼습니다. 따라서 Windows 업데이트를 차단하는 과정에서 Microsoft의 CDN을 차단할 가능성이 없습니다.
Sachin Joseph

88

jQuery 용 Google CDN을 반드시 사용해야합니다 (이는 Microsoft 중심 개발자가 제공함).

간단한 통계입니다. jQuery에 MS CDN 사용을 고려하는 사람들은 항상 소수입니다. jQuery를 사용하는 비 MS 개발자가 너무 많아 Google을 사용하고 Microsoft를 사용하지 않을 것입니다. 공개 CDN의 큰 승리 중 하나는 캐싱이 향상 되었기 때문에 여러 CDN으로 사용을 분할하면 해당 혜택의 가능성이 줄어 듭니다.


7
우리가 계속 그렇게 생각한다면 더 큰 것만이 숨을 쉴 수 있습니다. 구글이기 때문에 구글을 사용하지 말고 모두가 그들과 함께 있다고 가정하십시오 (의심의 여지가 없습니다). 그러나 최선을 다하고 결과를 비교하고 그들과 함께 가십시오.
mamu

20
가정이 아닙니다. Google의 CDN을 사용하여 Alexa의 사이트 수가 200,000 대에 이르렀을 때 Microsoft보다 100 : 1이 넘습니다. 캐싱에 대한 인기 측면에서 MS jQuery CDN에 유리한 유일한 점은 Microsoft.com이이를 사용한다는 것입니다. ).
Dave Ward

@DaveWard, 이것이 여전히 그렇다는 것을 증명할 수 있습니까, 아니면 지난 몇 년 동안 테이블이 다소 바뀌 었습니까?
snumpy

3
@ snumpy : Google CDN은 내가 본 것보다 약간 앞섰습니다. Microsoft CDN 에는 아무런 문제 가 없습니다 . 빠르며 Google 파일에는없는 몇 가지 파일이 있습니다. 교차 사이트 캐싱 이점은 전체 범위 적용 범위에 따라 달라지며 Google은 그와 관련하여 다른 모든 사이트를 지배합니다.
Dave Ward

jQuery Mobile을 호스팅하기 위해 jQuery CDN에서 Microeoft로 전환했기 때문에 DNS 왕복 횟수를 줄이기 위해 다른 jQuery 다운로드를 Google에서 다운로드했습니다. 또 다른 요인 :)
Rob Grant

20

Google은 자체 소프트웨어로 축소 된 jQuery 버전을 보내드립니다.이 버전은 MS에서 제공하는 표준 축소 버전보다 6kb 가볍습니다. Google로 이동하십시오.


18

한 가지 고려해야 할 것은 두 회사가 약간 다른 "추가"라이브러리를 제공한다는 것입니다.

필요에 따라 관련이있을 수 있습니다.


23
이 문서가 작성된 이후로 MS는 jQuery-UI를 CDN에 추가했습니다. asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean

15

또한 ajax.microsoft.com은 microsoft.com 요청의 하위 도메인이므로 모든 microsoft.com 쿠키를 파일을 다시 가져 오는 데 걸리는 전체 시간에 추가하여 보냅니다.

또한 ajax.microsoft.com은 다른 웹 서버에서 사용하는 표준 압축보다 열등한 기본 IIS7 압축을 사용하고 있습니다.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5K

또한 다른 사람들이 google CDN을 언급했듯이 파일이 캐시 될 가능성이 크게 높아집니다.

따라서 Google을 사용하는 것이 좋습니다.


3
당시에는 이의가 있었지만 권장 CDN 도메인 이름은 이제 ajax.aspnetcdn.com이므로 더 이상 적용되지 않습니다. * .microsoft.com 이의 제기 차단은 더 이상 적용되지 않습니다.
Stephen Kennedy

이것은 사실이다. 그들이 마침내이 부분을 고치게되어 기쁘다. 이제 mscdn에서 jquery validate / cycle 플러그인을 포함시키는 것에 대해 나쁘지 않습니다.
Alistair

aspnetcdn으로 전환하여 쿠키가 더 이상 적용되지 않습니다.
Rob Grant

11

중요하지는 않지만 일부 A / B 테스트를 통해이를 확인할 수 있습니다. 트래픽의 절반을 한 CDN으로, 다른 절반을 다른 CDN으로 보내고 응답을 측정하기위한 프로파일 링을 설정하십시오. 하나 또는 다른 하나에 심각한 사용 불가 문제가있는 경우 쉽게 전환 할 수 있어야한다고 생각합니다.


7

나는 여기에서 조금 늦게 chiming하고 있다는 것을 알고 있지만, 프로덕션에서 사용하고있는 코드는 다음과 같습니다. 문제가 없었지만 마일리지가 다를 수 있습니다. 자신의 환경에서 테스트해야합니다.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

1
불행하게도 일부 브라우저 (IE6)는 src = 스크립트가로드 될 때까지 해당 온라인 스크립트의 처리를 지연시키지 않으므로 예상대로 작동하지 않습니다. 그랬 으면 좋겠다!
Walden Leverich

2
따라서 IE6 사용자는 약간 느리게 경험합니다. 당신이 나에게 요청하면 좋은 절충. 기업 인트라넷에서도 IE6가 감소하고 있습니다.
Armstrongest

7

이 통계에 관하여 : jquery.com이 구글에서 jQuery를로드합니다. 그리고 Twitter, Stackoverflow 및 기타 많은 것들도 마찬가지입니다. 따라서, 귀하의 웹 사이트 사용자가 이미 캐시했을 가능성이 매우 높습니다 = 전혀 다운로드가 없습니다 .

이것이 주요 이점이기 때문에 유효성 검사기, 대역폭 및 속도를 잊어 버려라. 그렇지 않으면 다른 CDN 옵션은 기본적으로 동일한 수준에서 수행됩니다.


1
예, 그러나 트위터 (Dave Ward의 encosia.com/2010/09/15/…에 따르면 )는 jQuery 1.3.0 ( "오래된"Twitter)을 사용하므로 실제로 중요하지 않습니다 ... 아직 ...
veggerby

글쎄, 내가 얼마 전에했던 사이트는 여전히 (오래된) Twitter와 같은 jQuery 1.3.0을 사용합니다. 항상 중요합니다.
achairapart

6

하나는 다른 것보다 잠재적으로 빠릅니까?

실제로이 점이 궁금해서 다음 각 항목을 사용하여 jsbin 테스트 페이지를 설정 한 다음 webpagetest.org의 시각적 비교 도구를 통해 실행했습니다. 나는 테스트했다 :

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

가장 빠른 사람 : code.jquery.com 두 테스트에서 0.1 초

: 느린했다 누가 ajax.aspnetcdn.com을 0.7 첫 번째 테스트에서 초에서 ajax.googleapis.com 두 번째 테스트 1 초 단위로

첫 번째 테스트 는 다음과 같습니다 (각각 3 번 테스트).

비디오 : http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

보고서 : http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

두 번째 테스트 는 다음과 같습니다 (각각 3 개씩).

비디오 : http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

보고서 : http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR


4

Pingdom이 언급 한대로 :

누군가가 귀하의 사이트를 방문 할 때 동일한 CDN에서 동일한 jQuery 파일을 사용하는 다른 사이트를 이미 방문한 경우 파일이 캐시되어 전혀 다운로드 할 필요가 없습니다. 그것보다 빠를 수는 없습니다.

이것은 가장 널리 사용되는 CDN이 옆에 확률을 가져서 귀하의 사이트에 돈을 지불 할 수 있음을 의미합니다.

성능에 대한 몇 가지 관찰 : Google의 CDN은 북미와 유럽 모두에서 지속적으로 가장 느립니다. 유럽에서는 Microsoft의 CDN이 가장 빠릅니다.


3

타겟 고객의 위치에 따라 달라집니다. alertra.com을 사용하여 전 세계 여러 위치에서 CDN 속도를 모두 확인할 수 있습니다.


이것은 질문에 대한 답변을 제공하지 않습니다. 저자에게 비평을하거나 설명을 요청하려면 게시물 아래에 의견을 남겨주십시오.
Fiona-myaccessible.website

1
피오나에게 그것은 질문에 대한 나의 대답입니다. 문제는 "그것이 중요한가", 나의 대답은 "그의 대상 청중이 어디에 있는지에 달려있다"는 것입니다. 그리고 전 세계 여러 곳에서 속도를 테스트하여 어떤 CDN을 사용할지 결정할 수있는 사이트를 제공했습니다. 그것은 의견이 아니라 대답입니다.
침묵

3

추가 고려 사항-사이트가 SSL이고 Android 2.1 (또는 그 이전 버전)을 지원해야하는 경우이 문제에 따라 Microsoft CDN의 HTTPS 버전에서 SSL 인증서가 해당 버전의 Android 브라우저와 충돌합니다. http : // code .google.com에 / P / 안드로이드 / 문제 / 세부 사항? ID = 5001 . SSL 인증서가 기술적으로 유효하고 결함이 Android의 SSL 구현에 있기 때문에 Microsoft의 "오류"가 아닙니다. 그럼에도 불구하고 사이트가 중단됩니다.

Google의 CDN에있는 SSL 인증서는이 특정 문제 (인증서의 "인증서 대체 이름"과 관련하여)를 무시하지 않습니다.

따라서 SSL + Android 2.1을 지원하려면 Google CDN을 사용하십시오.


2

내 답변은 다른 답변과 약간 다르므로 jquery를 사용하는 경우 거의 모든 사람이 필요로하는 jquery 유효성 검사기가 필요한 경우 Microsoft와 함께 갈 것입니다.

Microsoft CDN http 연결은 Keep-Alive로 여러 항목을 요청할 때 큰 도움이됩니다.

따라서 jquery 유효성 검사가 필요한 경우 Microsoft CDN을 사용하십시오 .jquery ui가 필요한 경우에도 Google은 keep-alive를 유지하지 않으므로 모든 요청이 자체적으로 이루어지기 때문에 Microsoft를 사용하십시오. 그런 식으로 혼합하는 것은 플러스입니다. 유효성 검사기에만 Microsoft를 사용하는 경우 각 요청마다 Google 서버와 별도로 연결됩니다.



1

또한 Google CDN을 사용할 때 사람들이 ajax.googelapis.com과 같은 오타를 사용하는 것을 고려하십시오. 이로 인해 잠재적으로 불쾌한 xss (크로스 사이트 스크립팅) 공격이 발생할 수 있습니다. 나는 실제로 googlapis.com 오타를 등록하여 이것을 테스트했으며 자바 스크립트,지도, CSS 등에 대한 요청을 제공하는 것을 매우 빨리 발견했습니다.

Google에 이메일을 보내서 유사한 CDN 오타 URL을 등록하도록 요청했지만 다시는 듣지 못했습니다. 이는 잠재적으로 위험한 공격자가 오타 요청을 기다리고 있으며 xss 페이로드로 jquery 등을 쉽게 제공 할 수 있기 때문에 CDN에 의존하지 않는 실제 이유 일 수 있습니다.

감사합니다


1
주제에서 조금 벗어난 주제이지만 흥미로운 점입니다.
achairapart

1

응용 프로그램이 대상으로하는 산업에 따라 다른 조직에서 관리하는 CDN을 사용하지 않을 수 있습니다. 규정 준수, 개인 정보 보호 및 기밀 유지와 관련된 문제가 종종 발생합니다.

예를 들어 보안 응용 프로그램에 Google 웹 로그 분석을 포함해도 브라우저는 여전히 "참조 자"헤더로 현재 URL을 보냅니다. 세션 ID 또는 비밀 토큰과 같은 식별자는 로그에 나타날 수 있습니다. 예를 들어 클라이언트 IP가 192.0.2.5references https : //healthsystem.example/condition/impotence 인 경우 오히려 개인 정보로 간주되는 정보를 유추 할 수 있습니다.

다른 경우에는 계정 번호, 주민 등록 번호 또는 URL의 세션 정보와 같은 결과 정보가 포함됩니다. 이러한 종류의 데이터는 응용 프로그램 외부에서 사용할 수 있으므로 URL에 있어서는 안됩니다.

Google, Microsoft 또는 Yahoo를 신뢰할 수 있지만 사용자는 그렇지 않을 수 있습니다.

금융, 법률 및 건강 관리와 같은 산업의 경우 BAA에 서명 할 수있는 공급 업체 (예 : Akamai)의 도움을 받아 CDN을 구축 할 수 있습니다.


1

타겟팅하는 사용자의 일반적인 위치를 기준으로 사용하는 것이 좋습니다.

귀하의 사이트가 일반 대중을 대상으로하는 경우 Google의 CDN을 사용하는 것이 좋습니다.

귀하의 사이트가 중국을 대상으로하는 경우 Microsoft의 CDN을 사용하는 것이 더 좋습니다. Google 서버가 중국 정부에 의해 계속 차단되어 서버를 사용하는 웹 사이트를로드 할 수 없게 만들었 기 때문에 제 경험을 알고 있습니다.

* 중국을 위해 특별히 마련된 cn.mysite.com과 같이 지역별 사이트를 만들 수 있지만 리소스와 시간이 부족한 경우 고려해야 할 사항이 있습니다.

Microsoft CDN의 전체 목록은 여기입니다. http://www.asp.net/ajaxlibrary/cdn.ashx

그런 다음 방화벽 규칙에 의한 차단 가능성을 줄이는 ajax.aspnetcdn.com으로 이름이 변경되었습니다 .


-3

둘 다 사용하겠습니다!

Google Jquery 호스팅이 훨씬 길어짐에 따라 사람들이 Microsoft에 비해 이미 캐시 할 가능성이 훨씬 높으므로 먼저해야합니다.

개인적으로 다음과 같은 것을 사용합니다.

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(이 100 %가 확실하지는 않지만 아이디어를 쓰려고하지만 예제는 쓰지 않았습니다.이 링크를 찾을 수 없으므로 Google이 아닌 Jquery Jquery를 참조합니다)


6
jQuery는 페이지로 가져 오지 않으면 정의되지 않습니다. .js 파일을 캐시해도 기본적으로 모든 브라우저 페이지에서 사용할 수있는 것은 아닙니다!
Falkayn

1
이것은 작동합니다 : S 스크립트를 다시 읽으십시오-정의되어 있지 않으면 이것을 쓰고로드합니까?

12
나는 사람들이 왜 "<scr"+ "ipt ..."를하는지 이해하지 못했습니다.
익명의 겁쟁이

3
"브라우저, 다른 선행 자바 스크립트의 양 및 전체 코드의 형식에 따라 파서가 <script> 및 </ script> 태그를 문자열이 아닌 실행 가능한 코드로 해석하지 못하도록하기 위해 수행됩니다. 작성 될 것입니다. "
SeanJA

2
문제는 적극적으로로드 하지 않으면jQuery 정의 되지 않습니다 . 스크립트에서 첫 번째 브랜치는 항상 실행됩니다 (위에 다른 jQuery가 포함되어 있지 않은 한) 스크립트를 불필요하게 렌더링합니다.
jensgram
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.