문제

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

도움이 되었습니까?

해결책

의견을 바탕으로 업데이트 :

짧은 버전 : 그다지 중요하지는 않지만 그들이 호스팅하는 것에 달려있을 수 있습니다. Google은 jQuery.validate를 호스팅하지 않습니다. Microsoft는 2016 년부터 JQuery-UI를 호스팅하지 않았습니다. Microsoft는 그렇지 않으면 서비스를 제공 할 대본을 제공합니다. ScriptResource.axd 더 쉬운 통합 (예 : ASP.NET 4.0을 가진 ScriptManager).

중요 사항: 인트라넷 응용 프로그램을 구축하는 경우 CDN 접근 방식을 피하십시오. 누가 호스팅하는지는 중요하지 않습니다. 매우 내부적으로 과부하 된 서버는 CDN이 로컬 100MB/1GB 이더넷보다 더 많은 성능을 제공하지 않습니다. 엄격하게 내부 응용 프로그램에 CDN을 사용하는 경우 성능을 아프게합니다. 캐시 만료 헤더를 올바르게 설정하십시오 그리고 CDN은 인트라넷 전용 시나리오에 존재합니다.

차단 될 가능성은 거의 동일하고 거의 0 인 것 같습니다. 나는 이것이 사실이 아닌 계약에서 일했지만 예외 인 것 같습니다. 또한이 답변의 원래 게시 이후, 그 주변의 컨텍스트가 크게 바뀌었고 Microsoft CDN은 많은 진전을 이루었습니다.

현재 진행중인 프로젝트는 솔루션에 가장 적합한 두 CDN을 모두 사용합니다. 이것에 몇 가지 요소가 작용합니다. 사용자가있는 사용자 오래된 브라우저 아마도 도메인 당 2 개의 동시 요청을 만들고있을 것입니다 HTTP 사양에서 권장하는대로. 이것은 괜찮은 새로운 것을 운영하는 사람에게는 문제가되지 않습니다. 파이프 라인을 지원합니다 (모든 현재 브라우저)이지만 다른 요인을 기반으로 우리는 적어도 JavaScript 까지이 한계를 두드리고 있습니다.

우리가 사용하는 Google의 CDN은 다음을 사용하고 있습니다.

Microsoft의 CDN 우리는 다음을 사용하고 있습니다.

우리 서버 :

  • combined.js? v = 2.2.0.6190 (major.minor.iteration.changeset)

빌드 프로세스의 일부는 모든 사용자 정의 JavaScript를 결합하고 조정하기 때문에 빌드에 따라 해당 스크립트의 릴리스 또는 디버그 (비합되지 않은) 버전을 포함하는 사용자 정의 스크립트 관리자를 통해이를 수행합니다. Google은 jQuery 유효성 검사 패키지를 호스팅하지 않으므로 이는 다운 슬라이드 일 수 있습니다. MVC는 2.0 릴리스에 이것을 포함/사용하므로 모든 요구에 대해 Microsoft의 CDN에 완전히 의존 할 수 있습니다. 그리고 스크립트 관리자를 통해 모든 것이 자동입니다.

다른 주장은 DNS 시간이며, 페이지로드 속도 측면에서 비용이 있습니다. 평균적으로: 단순히 더 많이 사용되기 때문에 (더 길어졌습니다) ajax.googleapis.com DNS에 의해 더 빨리 반환 될 가능성이 높습니다 ajax.microsoft.com, 로컬 DNS 서버가 요청을받을 가능성이 높기 때문에 (이것은 영역 페널티의 첫 번째 사용자입니다). 이것은 매우 사소한 것은 성능이 밀리 초까지 매우 중요한 경우에만 고려해야합니다.
(예 :이 점이 두 CDN을 사용하는 것과 상반되는 것을 알고 있지만, 우리의 경우 DNS 시간은 발생하는 JavaScript/Blocking의 대기 시간에 의해 훨씬 어두워집니다).

마지막으로, 당신이 그것을 보지 않았다면, 최고의 도구 중 하나는 개똥 벌레, 및 일부 플러그인 : 페이지 속도 그리고 yslow. CDN을 사용하지만 캐시 헤더가 없기 때문에 매번 페이지가 이미지를 요청하는 경우 저급 과일이 없습니다. FireBug의 NET 패널은 페이지로드 타임을 빠르게 분석 할 수 있으며 페이지 속도/yslow는 도움이되는 몇 가지 좋은 제안을 제공 할 수 있습니다.

다른 팁

jQuery 용 Google CDN을 절대적으로 사용해야합니다 (그리고 이것은 Microsoft 중심 개발자에서 나옵니다).

간단한 통계입니다. jQuery에 MS CDN을 사용하는 것을 고려하는 사람들은 항상 소수 일 것입니다. Google을 사용하고 Microsoft의 사용을 고려하지 않는 JQuery를 사용하는 비 중 MS 개발자가 너무 많습니다. 부터 공개 CDN의 큰 승리 중 하나는 캐싱이 개선되었습니다., 여러 CDN 간의 사용을 분할하면 해당 이점의 잠재력이 줄어 듭니다.

Google은 자체 소프트웨어로 미니딩 된 jQuery 버전을 보내며,이 버전은 MS가 제공하는 표준 미니딩 버전보다 6KB 더 가벼워집니다. 구글로 가십시오.

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

귀하의 요구에 따라, 이것은 관련이있을 수 있습니다.

또한 Ajax.microsoft.com은 Microsoft.com 요청의 하위 도메인이므로 모든 Microsoft.com 쿠키를 파일을 다시 얻는 데 걸리는 전체 시간에 추가됩니다.

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

http://ajax.microsoft.com/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을 사용하는 것이 좋습니다.

아마도 중요하지 않지만 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> 

통계에 관한 것입니다. jQuery.com Google에서 jQuery를로드합니다. 그리고 트위터, StackoverFlow 및 많은 다른 많은 것들도 마찬가지입니다. 따라서 귀하의 웹 사이트 사용자가 이미 캐시드를 가질 가능성이 매우 높습니다. 전혀 다운로드하지 않습니다.

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

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

나는 실제로 이것에 대해 궁금해서 다음 각각을 사용하여 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

언급 한 바와 같이 Pingdom:

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

이는 가장 널리 사용되는 CDN이 측면에 확률을 가질 것이며, 이는 사이트에 대한 보상을받을 수 있음을 의미합니다.

성능에 대한 몇 가지 관찰 : Google의 CDN은 북아메리카와 유럽에서 세 가지 중 가장 느린 것입니다. 유럽에서는 Microsoft의 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 Cert는이 특정 문제에 부응하지 않습니다 (인증서의 "인증서 주제 ALT 이름"과 관련하여).

따라서 SSL + Android 2.1 지원의 경우 Google CDN을 사용하십시오.

내 대답은 다른 사람들과 약간 다릅니다. jQuery를 사용하는 경우 거의 모든 사람이 필요한 jQuery Validator가 필요하면 Microsoft와 함께 갈 것입니다.

Microsoft CDN HTTP 연결은 여러 항목을 요청할 때 크게 증가합니다.

따라서 jQuery 유효성 검사가 필요한 경우 Microsoft CDN을 사용하십시오. jQuery UI가 필요하더라도 Google이 계속 유지되지 않으므로 모든 요청이 자체적으로 유지되기 때문에 Microsoft를 사용하십시오. 그러므로 그런 식으로 섞는 것이 플러스입니다. Validator에만 Microsoft를 사용하는 경우 각 요청에 대해 Google 서버와 별도로 연결하고 있습니다.

여름에는 Microsoft가 UI를 제공하지 않는다고 말합니다. 다운로드 할 수 있습니다 http://www.asp.net/ajaxlibrary/cdn.ashx.

또한 Google CDN을 사용할 때 때때로 사람들은 ajax.googelapis.com과 같은 오타를 만듭니다. 이것은 잠재적으로 불쾌한 XSS (크로스 사이트 스크립팅) 공격을 일으킬 수 있습니다. 나는 실제로 GOOGLAPIS.com 오타를 등록하여 이것을 테스트했으며 JavaScript,지도, CSS 등에 대한 요청을 매우 빨리 발견했습니다.

나는 Google에게 이메일을 보냈고 비슷한 CDN 오타 URL을 등록하도록 요청했지만 다시 들어 보지 못했습니다. 오타 요청을 기다리는 잠재적으로 위험한 공격자가 있고 XSS 페이로드로 jQuery 등을 쉽게 다시 제공 할 수 있기 때문에 CDN에 의존하지 않는 것이 진짜 이유 일 수 있습니다.

고맙습니다

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

예를 들어, 보안 애플리케이션에 Google 웹 로그 분석을 포함시킬 때 브라우저는 여전히 현재 URL을 "Referer"헤더로 보냅니다. 모든 식별자는 세션 ID 또는 비밀 토큰이 로그에 나타날 수 있다고 말합니다. 예를 들어, 클라이언트 IP가 192.0.2.5 인 경우 https : //healthsystem.example/condition/impotence, 그럼, 당신은 다소 사적인 것으로 간주되는 정보를 추론 할 수 있습니다.

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

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

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

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

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

귀하의 사이트가 중국을 대상으로하는 경우 Microsoft의 CDN을 사용하는 것이 더 나은 선택이 될 것입니다. Google의 서버가 중국 정부에 의해 계속 차단되어로드 할 수없는 웹 사이트를 렌더링하면서 내 경험을 통해 내 경험을 통해 알고 있습니다.

*COS는 지역 별 사이트 (예 : 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% 작동은 확실하지 않지만 예시가 아닌 아이디어를 작성하려고했습니다. 링크를 찾을 수없는 Microsoft가 아닌 Google 호스팅 jQuery를 참조하십시오).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top