programing

Microsoft CDN for jQuery 또는 Google CDN?

muds 2023. 8. 24. 22:31
반응형

Microsoft CDN for jQuery 또는 Google CDN?

당신이 당신의 jquery 파일이나 그 문제에 대한 javascript 파일에 링크하기 위해 사용하는 CDN이 실제로 중요한가요?하나가 다른 하나보다 잠재적으로 빠릅니까?어떤 cdn을 사용하기로 결정할 때 어떤 다른 요소가 역할을 할 수 있습니까?저는 마이크로소프트, 야후, 구글이 모두 CDN을 가지고 있다는 것을 알고 있습니다.

설명을 기반으로 업데이트:

짧은 버전:별로 중요하지는 않지만, 그들이 주최하는 것에 따라 다를 수 있습니다.이들은 모두 다른 것은 다음과 같습니다.구글은 jQuery를 호스팅하지 않습니다.검증, 마이크로소프트는 2016년부터 jQuery-UI를 호스팅하지 않았습니다.Microsoft는 다음을 통해 제공되는 스크립트를 제공합니다.ScriptResource.axd통합이 용이합니다(예: ScriptManager와 ASP). 4.0).

중요 참고:인트라넷 애플리케이션을 구축하는 경우 CDN 접근 방식에서 멀리 떨어져 있어야 합니다.누가 호스팅하는지는 중요하지 않습니다. 내부적으로 매우 과부하 상태의 서버에 있지 않는 한 로컬 100mb/1보다 더 높은 성능을 제공하는 CDN은 없습니다.GB 이더넷입니다.엄격한 내부 애플리케이션에 CDN을 사용하면 성능이 저하됩니다.캐시 만료 헤더를 올바르게 설정하고 인트라넷 전용 시나리오에 CDN이 있는지 무시합니다.

둘 중 하나가 차단될 가능성은 거의 동일하고 거의 제로인 것 같습니다.저는 이것이 사실이 아닌 계약에 대해 일해봤지만, 예외인 것 같습니다.또한, 이 답변의 원래 게시 이후, 이 답변을 둘러싼 맥락이 크게 바뀌었고, 마이크로소프트 CDN은 많은 진전을 이루었습니다.

현재 진행 중인 프로젝트는 우리 솔루션에 가장 적합한 두 개의 CDN을 모두 사용합니다.여기에는 몇 가지 요인이 작용합니다.이전 브라우저를 사용하는 사용자는 여전히 HTTP 사양에서 권장하는 대로 도메인당 2개의 동시 요청을 수행하고 있습니다.이것은 파이프라인(모든 현재 브라우저)을 지원하는 꽤 새로운 것을 실행하는 사람에게는 문제가 되지 않지만, 다른 요인에 따르면 적어도 자바스크립트에 관해서는 이러한 제한을 제거하고 있습니다.

Google에서 사용 중인 CDN:

Microsoft에서 사용하는 CDN:

당사 서버:

  • combined.js?v=2.2.0.6190(주요.소반복.변경사항 집합)

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

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

마지막으로, 만약 여러분이 그것을 보지 않았다면, 최고의 도구들 중 하나는 Firebug이고, 그것을 위한 플러그인은 페이지 속도와 YSlow입니다.CDN을 사용하지만 캐시 헤더가 없기 때문에 페이지가 매번 이미지를 요청하는 경우에는 낮게 매달린 과일을 놓치게 됩니다.Firebug의 Net 패널은 페이지 로드 시간을 빠르게 분석할 수 있으며, Page Speed/YSlow는 도움이 되는 몇 가지 좋은 제안을 제공할 수 있습니다.

당신은 반드시 구글 CDN for jQuery를 사용해야 합니다(이것은 마이크로소프트 중심 개발자의 것입니다).

단순한 통계입니다.MS CDN을 jQuery에 사용하는 것을 고려하는 사람들은 항상 소수일 것입니다.jQuery를 사용하는 MS가 아닌 개발자가 너무 많아서 구글을 사용할 것이고 마이크로소프트를 사용할 것을 고려하지 않을 것입니다.공용 CDN의 이점하나는 캐슁 기능이 향상된 것이기 때문에 여러 CDN 간에 사용을 분할하면 이러한 이점이 감소할 수 있습니다.

Google은 자체 소프트웨어로 최소화된 jQuery 버전을 보낼 것입니다. 이 버전은 MS가 제공하는 표준 최소화 버전보다 6kb 가볍습니다. Google용 Go.

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

  • Microsoft는 CDN에서 JQuery 유효성 검사 라이브러리를 제공하는 반면 Google은 제공하지 않습니다(http://www.asp.net/ajaxlibrary/cdn.ashx) .
  • Google은 CDN에서 JQuery UI 라이브러리를 제공하는 반면 Microsoft는 제공하지 않습니다(http://code.google.com/apis/ajaxlibs/documentation/) .

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

또한 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은 파일이 캐시될 가능성을 크게 증가시키는 훨씬 더 인기가 있습니다.

그래서 저는 구글을 사용하는 것을 강력히 추천합니다.

아마 상관없겠지만, 당신은 A/B 테스트를 통해 이것을 확인할 수 있습니다.트래픽의 절반을 한 CDN으로 보내고 나머지 절반을 다른 CDN으로 보내고 응답을 측정할 프로파일링을 설정합니다.저는 둘 중 하나가 심각한 가용성 문제가 있을 경우에 대비하여 쉽게 전환할 수 있는 것이 더 중요하다고 생각합니다.

제가 조금 늦게 전화를 드리는 것은 알지만, 여기 제가 생산 과정에서 사용해온 코드가 있습니다.문제가 된 적은 없지만 주행거리가 다를 수 있습니다.사용자 환경에서 테스트해야 합니다.

<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> 

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

저는 사실 이것이 궁금했기 때문에 아래의 각 페이지를 사용하여 jsbin 테스트 페이지를 설정한 다음 webpagetest.org 의 시각적 비교 도구를 통해 실행했습니다.테스트 결과:

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

누가 가장 빨랐는지: 코드.테스트 모두에서 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

Pingdom에서 언급한 바와 같이:

다른 사용자가 사용자의 사이트를 방문할 때 동일한 CDN에서 동일한 jQuery 파일을 사용하는 다른 사이트를 이미 방문한 경우 해당 파일은 캐시되어 있으므로 다운로드할 필요가 전혀 없습니다.그보다 더 빨라질 수는 없습니다.

이것은 가장 널리 사용되는 CDN이 당신의 사이트에 대한 보상을 받을 수 있는 기회를 가질 것이라는 것을 의미합니다.

성능에 대한 몇 가지 관찰:구글의 CDN은 북미와 유럽 둘 다에서 세 가지 중에서 일관되게 가장 느립니다.유럽에서는 마이크로소프트의 CDN이 가장 빠릅니다.

당신의 목표 관객이 어디에 있느냐에 따라 다르다고 생각합니다.alertra.com 을 사용하여 전 세계 여러 곳에서 CDN 속도를 모두 확인할 수 있습니다.

가지 추가적인 고려 사항 - 사이트가 SSL이고 Android 2.1(또는 이전 버전)을 지원해야 하는 경우, Microsoft CDN의 HTTPS 버전의 SSL 인증서가 이 문제에 따라 Android 브라우저 버전을 손상시킵니다. http://code.google.com/p/android/issues/detail?id=5001 .SSL 인증서는 기술적으로 유효하고 Android의 SSL 구현에 결함이 있기 때문에 Microsoft의 "잘못"이 아닙니다.그럼에도 불구하고 사이트가 다운될 것입니다.

Google CDN의 SSL 인증서는 이 특정 문제(인증서의 "인증서 제목 Alt 이름"과 관련)에 해당되지 않습니다.

따라서 SSL + Android 2.1을 지원하는 경우 Google CDN을 사용합니다.

제 대답은 다른 사람들과 조금 다릅니다. 만약 당신이 jquery를 사용한다면 거의 모든 사람들이 필요로 하는 jquery validator가 필요하다면 마이크로소프트로 가겠습니다.

Microsoft CDN http 연결은 Keep-Alive로, 여러 항목을 요청할 때 큰 이점이 있습니다.

따라서 만약 당신이 jquery 검증이 필요하다면, 마이크로소프트 CDN을 사용하세요. 비록 당신이 jqueryui가 필요하더라도, 당신은 microsoft를 사용하세요. 왜냐하면 구글은 keep-alive를 유지하지 않기 때문에 모든 요청은 그것 자체이기 때문입니다. 그래서 그런 방식으로 혼합하는 것은 플러스입니다.만약 당신이 검증자를 위해서만 마이크로소프트를 사용한다면, 당신은 각각의 요청에 대해 구글 서버와 별도의 연결을 하는 것입니다.

여름에 마이크로소프트가 UI를 제공하지 않는다고 하는데, 그것은 (더 이상) 올바르지 않습니다.http://www.asp.net/ajaxlibrary/cdn.ashx 에서 다운로드할 수 있습니다.

또한 Google CDN을 사용할 때 때때로 사람들이 ajax.googelapis.com 과 같은 오타를 낸다는 것을 고려해야 합니다.이로 인해 매우 심각한 xss(사이트 간 스크립팅) 공격이 발생할 수 있습니다.저는 실제로 googlapis.com 오타를 등록하여 이것을 테스트했고 매우 빠르게 자바스크립트, 지도, CSS 등에 대한 요청을 처리하는 제 자신을 발견했습니다.

구글에 이메일을 보내 유사한 CDN typo URL을 등록해달라고 요청했지만 답변이 없습니다.잠재적으로 위험한 공격자들이 오타 요청을 기다리고 있고 xss 페이로드로 jquery 등을 쉽게 처리할 수 있기 때문에 CDN에 의존하지 않는 진짜 이유가 될 수 있습니다.

감사해요.

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

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

다른 경우에는 계정 번호, 사회 보장 번호 또는 URL의 세션 정보와 같은 결과 정보가 포함됩니다.그런 종류의 데이터는 애플리케이션 외부에서 사용될 수 있으므로 URL에 있으면 안 됩니다.

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

금융, 법률 및 의료와 같은 업종의 경우 BAA를 체결할 수 있는 공급업체(예: Akamai)의 도움을 받아 자체 CDN을 구축할 수 있습니다.

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

만약 당신의 사이트가 일반 대중을 대상으로 한다면, 구글의 CDN을 사용하는 것이 좋은 선택이 될 것입니다.

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

*특히 중국을 위해 cn.mysite.com 과 같은 지역별 사이트를 만들 수 있지만, 리소스와 시간이 부족한 경우 고려해 볼 가치가 있습니다.

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

이후 방화벽 규칙에 의해 차단될 가능성을 줄이기 위해 ajax.aspnetcdn.com 으로 이름이 변경되었습니다.

둘 다 쓸 거예요!

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를 참조하는 것이지 Microsoft에서 호스팅한 Jquery를 참조하는 것이 아닙니다.)

언급URL : https://stackoverflow.com/questions/1447184/microsoft-cdn-for-jquery-or-google-cdn

반응형