JQuery veya Google CDN için Microsoft CDN? [kapalı]


187

Jquery dosyanıza veya bu konudaki herhangi bir javascript dosyasına bağlanmak için hangi CDN'yi kullandığınız gerçekten önemli mi? Biri diğerinden daha hızlı mı? Kullanmaya karar verdiğiniz cdn'de başka hangi faktörler rol oynayabilir? Microsoft, Yahoo ve Google'ın artık CDN'leri olduğunu biliyorum.

Yanıtlar:


151

Yorumlara göre güncelleme:

Kısa versiyon: Çok önemli değil, ancak barındırdıklarına bağlı olabilir. Hepsi konak farklı şeyler: Google 2016 yılından bu yana yaptıkları !! Microsoft sunmaktadır değil, ev sahibi jQuery.Validate Microsoft konak jQuery UI vermedi yapar aksi yoluyla hizmet olacağını onların komut ScriptResource.axdve daha kolay bir entegrasyon (örn ASP ile ScriptManager'ın. Net 4.0 ).

Önemli Not: Bir intranet uygulaması oluşturuyorsanız, CDN yaklaşımından uzak durun. Bir konum sürece, bunu kimin barındırdığı önemli değil çok içten aşırı sunucunun hiçbir CDN size yerel 100mb daha / 1GB ethernet olacak daha fazla performans verecektir. Tamamen dahili bir uygulama için bir CDN kullanırsanız performanstan zarar görürsünüz . Önbellek süre sonu üstbilgilerinizi doğru şekilde ayarlayın ve yalnızca intranet senaryosunda bulunan CDN'leri yok sayın.

Her ikisinin de bloke olma şansı eşit, neredeyse sıfır gibi görünüyor. Bunun doğru olmadığı sözleşmeler üzerinde çalıştım, ancak bir istisna gibi görünüyor. Ayrıca, bu cevabın orijinal yayını, onu çevreleyen bağlam çok değiştiğinden, Microsoft CDN çok ilerleme kaydetti.

Şu anda üzerinde çalıştığım proje, çözümümüz için en iyi sonucu veren her iki CDN'yi de kullanıyor. Bunun içinde birkaç faktör vardır. Daha eski bir tarayıcıya sahip kullanıcılar, muhtemelen HTTP spesifikasyonu tarafından önerilen şekilde alan başına 2 eşzamanlı istekte bulunuyor . Bu, boru hattını destekleyen (her mevcut tarayıcı) iyi bir şey çalıştıran herkes için bir sorun değildir , ancak başka bir faktöre dayanarak, en azından javascript kadar bu sınırlamayı da ortadan kaldırıyoruz.

Google'ın aşağıdakiler için kullandığımız CDN'si:

Microsoft'un kullandığımız CDN'si:

Sunucumuz:

  • Combined.js? V = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

Yapım sürecimizin bir kısmı tüm özel javascript'i birleştirip minimize ettiğinden, bunu yapıya bağlı olarak bu komut dosyalarının yayın veya hata ayıklama (küçültülmemiş) sürümlerini içeren özel bir komut dosyası yöneticisi aracılığıyla yapıyoruz. Google jQuery doğrulama paketini barındırmadığından, bu bir alt taraf olabilir. MVC, 2.0 sürümlerinde bunu içeriyor / kullanıyor, böylece tüm ihtiyaçlarınız için tamamen Microsoft'un CDN'sine güvenebiliyorsunuz ve hepsi ScriptManager aracılığıyla otomatik olarak .

Yapılması gereken diğer tek argüman DNS süreleridir, bunun sayfa yükleme hızı açısından bir maliyeti vardır. Ortalama olarak: Basitçe daha fazla kullanıldığından (daha uzun süredir) ajax.googleapis.comDNS tarafından daha erken iade edilmesi muhtemeldir ajax.microsoft.com, çünkü yerel DNS sunucusunun istek alması daha olasıdır (bu, alan cezasında ilk kullanıcıdır) . Bu çok küçük bir şeydir ve yalnızca performans milisaniyeye kadar son derece önemliyse dikkate alınmalıdır.
(Evet: Bu noktanın her iki CDN'yi kullanmamın aksine olduğunu anlıyorum, ancak bizim durumumuzda DNS süresi, ortaya çıkan javascript / engelleme üzerindeki bekleme süresinden çok gölgede kalıyor)

Son olarak, bakmadıysanız , en iyi araçlardan biri Firebug ve bunun için bazı eklentiler: Sayfa Hızı ve YSlow . Bir CDN kullanıyorsanız ancak sayfalarınız önbellek başlığı olmadığından her seferinde görüntü istiyorsa, düşük meyveyi kaçırıyorsunuz demektir. Firebug'un Net paneli hızlı bir şekilde sayfa yükleme sürenizi kısaltabilir ve Page Speed ​​/ YSlow size yardımcı olacak bazı iyi önerilerde bulunabilir.


26
Engellenme olasılığı daha az mı? Bu fikri nasıl bulduğunuzu bilmek isterim. MS ağı zaten MS değil, Google'ınkinden çok daha uzun bir süredir yük dengeli sunucular yapan akamai'ler, bu da "daha iyi düşme sistemi" anlamsız hale getiriyor. Gerçekten, böyle iddialarda bulunacaksanız, bazı kanıtlar iyi olurdu.
blowdart

16
Bazı şirketler ve ben birkaç çalıştı ettik *, windows güncelleme engelleme bir parçası olarak * .microsoft.com açıkça açıkça. Bu doğru mu? Hayır, olur mu? Evet. Örnek: ajax.microsoft.com/...it , www. İstisna altında değil * .microsoft.com bloğunun altına girer, bir şirket www.microsoft.com dışında bir şeyi engellemeyi seçtiğinde engellenir. Ben çok muhtemel olduğunu söylemedim, daha önce söyledim, çünkü daha önce google'ın engellenmiş olduğunu görmedim ama tersini gördüm.
Nick Craver

5
Google'ın devlet sitelerinde Gmail'i durdurmak için engellendiğini gördüm. Ancak çok nadir olduğu için, bu durumda bir gerekçe olarak kullanmaya zorlanıyordum.
blowdart

19
Bu yazıldığı için MS, CDN'lerine
Will Dean

3
@Nick Microsoft CDN'sini ajax.microsoft.com'dan ajax.aspnetcdn.com'a taşıdı. Bu nedenle, Windows Güncellemelerini engellemenin bir parçası olarak Microsoft'un CDN'sini engelleme şansı yoktur.
Sachin Joseph

88

Google CDN'yi jQuery için kesinlikle kullanmalısınız (ve bu Microsoft merkezli bir geliştiriciden geliyor).

Basit istatistikler. JQuery için MS CDN kullanmayı düşünenler her zaman azınlık olacaktır. Google'ın kullanacağı ve Microsoft'un kullanılmasını düşünmeyecek olan jQuery kullanan çok sayıda MS dışı geliştirici var. Yana bir kamu CDN ile büyük kazanç biri geliştirilmiş önbelleğe olduğunu , birden CDN'lerin arasında bölme kullanımı o yararına potansiyelini azaltır.


7
eğer bu şekilde düşünmeye devam edersek, sadece daha büyük nefes alır. Sadece google kullanmayın çünkü bu google ve herkesin onlarla birlikte olduğunu varsayalım (şüphesiz çoğu onlarla birlikte). Ama en iyi kazanın, sonucu karşılaştırın ve onlarla devam edin.
mamu

20
Bu bir varsayım değil. Alexa'nın Google'daki CDN'sini kullanan siteler 200.000'den fazla Microsoft'un 100: 1'in üzerinde. Önbellekleme için popülerlik açısından, MS jQuery CDN'nin lehine olan tek nokta, Microsoft.com'un onu kullanmasıdır, bu da yalnızca bir referanstan çok fazla pozlama sağlar (ancak Google'ın referans aldığı binlerce üst site kadar değil) ).
Dave Ward

@DaveWard, durumun hala böyle olduğunu doğrulayabilir misiniz veya tablolar son birkaç yıldır biraz açıldı mı?
Snumpy

3
@snumpy: Google CDN, liderliğini gördüğümden biraz uzattı. Microsoft CDN'sinde yanlış bir şey yok . Hızlıdır ve Google'da olmayan birkaç dosya vardır. Siteler arası önbellekleme avantajı, net ağ kapsamına bağlıdır ve Google, bu konuda diğerlerine egemendir.
Dave Ward

JQuery Mobile'ı barındırmak için jQuery CDN'den Microeoft'a geçtim, DNS gidiş-dönüş sayısını azaltmak için diğer jQuery indirmelerimi Google'dan taşıdım. Başka bir faktör :)
Rob Grant

20

Google size kendi yazılımlarıyla küçültülmüş bir jQuery sürümü gönderecektir, bu sürüm MS tarafından sunulan standart küçültülmüş sürümden 6kb daha hafiftir. Google'a gidin.



15

Ayrıca, ajax.microsoft.com'un microsoft.com isteklerinin bir alt etki alanı olduğu için, tüm microsoft.com çerezlerini dosyayı geri almak için gereken toplam süreye ekleyerek göndermesi de unutulmamalıdır.

Ayrıca, ajax.microsoft.com, diğer web sunucularının kullandığı standart sıkıştırmadan daha düşük olan varsayılan IIS7 sıkıştırmasını kullanıyor.

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

Ayrıca, diğerlerinin de belirttiği gibi, google CDN çok daha popüler bir dosya önbelleğe alma şansını büyük ölçüde artırır.

Bu yüzden Google'ı kullanmanızı şiddetle tavsiye ederim.


3
Bu, o zaman iyi bir itirazdı, ancak önerilen CDN alan adı artık ajax.aspnetcdn.com olduğundan artık geçerli değil. * .Microsoft.com itirazının engellenmesi de artık geçerli değildir.
Stephen Kennedy

Bu doğru. nihayet bu kısmı düzeltti sevindim. Şimdi ms cdn jquery validate / cycle eklentisi dahil hakkında o kadar kötü hissetmiyorum.
Alistair

Aspnetcdn'e geçiş nedeniyle çerezler artık geçerli değildir.
Rob Grant

11

Muhtemelen önemli değil, ancak bunu bazı A / B testleriyle doğrulayabilirsiniz. Trafiğinizin yarısını bir CDN'ye, yarısını diğerine gönderin ve yanıtı ölçmek için bir profil oluşturun. Birinin veya diğerinin ciddi kullanılamama sorunları olması durumunda kolayca geçiş yapabilmenin daha önemli olacağını düşünüyorum.


7

Burada biraz geç kaldýđýmý biliyorum, ama burada üretimde kullandýđým kod. Bununla ilgili hiç sorun yaşamadım, ancak kilometreniz değişebilir. Kendi ortamınızda test ettiğinizden emin olun.

<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
Ne yazık ki bazı tarayıcılar (IE6), bu çevrimiçi komut dosyasının işlenmesini src = komut dosyası yüklenene kadar geciktirmez, bu beklendiği gibi çalışmaz. Keşke isterdim!
Walden Leverich

2
Yani, IE6 kullanıcılarınız biraz yavaş bir deneyim yaşarlar. Bana sorarsan iyi takas. IE6 düşüşe geçti ... Kurumsal intranetlerde bile.
Armstrongest

7

İstatistikler hakkında: jquery.com Google'dan jQuery yükler. Twitter, Stackoverflow ve diğerleri de öyle. Yani, web sitesi kullanıcı zaten önbelleğe sahip oldukça yüksek olasılıklar vardır = hiç indirme .

Doğrulayıcı, bant genişliği ve hızı unutun çünkü bu en büyük yararıdır. Aksi takdirde, başka herhangi bir CDN seçeneği temel olarak aynı seviyede çalışır.


1
Evet, ama Twitter (Dave Ward'ın encosia.com/2010/09/15/… ) göre jQuery 1.3.0 ("eski" Twitter) kullanır, bu yüzden gerçekten önemli değil ... henüz ...
veggerby

Bir süre önce yaptığım siteler hala (eski) Twitter gibi jQuery 1.3.0 kullanıyor. Her zaman önemlidir.
achairapart

6

Biri diğerinden daha hızlı mı?

Aslında kendimi merak ettim, bu yüzden aşağıdakilerin her birini kullanarak bir jsbin test sayfası hazırladım ve sonra webpagetest.org'un görsel karşılaştırma aracını kullanarak çalıştırdım. Test ettim:

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

Kim en hızlıydı: code.jquery.com her iki testte de 0,1 saniye

Kim en yavaştı : ajax.aspnetcdn.com ilk testte 0.7 saniye ve ajax.googleapis.com ikinci testte 1 saniye

İşte 1. test (her biri 3 kez test edildi):

Video: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

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

İşte 2. test (her biri 3 tane daha):

Video: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

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


4

Pingdom tarafından belirtildiği gibi :

Birisi sitenizi ziyaret ettiğinde, aynı CDN'de aynı jQuery dosyasını kullanan başka bir siteyi daha önce ziyaret etmişse, dosyanın önbelleğe alınmış olması ve indirilmesi gerekmez. Bundan daha hızlı olamaz.

Bu, en yaygın olarak kullanılan CDN'nin yanlarında, siteniz için ödeme yapabilecek oranlara sahip olacağı anlamına gelir.

Performansla ilgili birkaç gözlem: Google'ın CDN'si, hem Kuzey Amerika'da hem de Avrupa'da üçünün en yavaşıdır. Avrupa'da, Microsoft'un CDN'si en hızlısıdır.


3

Bence bu hedef kitlenizin nerede olduğuna bağlı. Alertra.com'u, dünyanın birçok yerinden CDN hızını kontrol etmek için kullanabilirsiniz.


Bu soruya bir cevap vermez. Bir yazardan eleştiri veya açıklama istemek için gönderilerinin altına bir yorum bırakın.
Fiona - myaccessible.website

1
Fiona'ya göre, bu soruya cevabım. Soru "önemli mi?", Cevabım "hedef kitlesinin bulunduğu yere bağlı" ve dünyanın farklı yerlerinden gelen hızı test etmek için hangi CDN'yi kullanacağına karar vermesi için bir site sağladım. Bu bir yorum değil, bir cevap.
sessiz

3

Dikkat edilmesi gereken bir diğer nokta da, siteniz SSL ise ve Android 2.1'i (veya daha eski bir sürümü) desteklemeniz gerekiyorsa, Microsoft CDN'nin HTTPS sürümündeki SSL sertifikası bu sorunla ilgili olarak Android tarayıcının bu sürümlerini kilitleyecektir: http: // code .google.com / p / android / sorunlar / ayrıntı? id = 5001 . SSL sertifikası teknik olarak geçerli olduğu ve kusur Android'in SSL uygulamasında olduğu için Microsoft'un "hatası" değil, ancak yine de sitenizi kilitleyecektir.

Google'ın CDN'sindeki SSL sertifikası bu özel sorundan (sertifikanın "Sertifika Konusu Alt Adı" ile ilgili) düşmez.

Bu nedenle, SSL + Android 2.1 desteği için Google CDN'yi kullanın.


2

Cevabım diğerlerinden biraz farklı, jquery kullanıyorsanız neredeyse herkesin ihtiyaç duyduğu jquery validator'a ihtiyacınız varsa microsoft ile gideceğim.

Microsoft CDN http bağlantısı, birden fazla öğe talep ettiğinizde büyük artı olan Keep-Alive'dir.

Yani jquery doğrulama gerekiyorsa o zaman Microsoft CDN kullanın, jquery ui ihtiyacınız olsa bile google kullanın çünkü google canlı tutmak değil böylece her istek kendi başına. bu şekilde karıştırma artı. microsoft'u yalnızca doğrulayıcı için kullanıyorsanız, her istek için google sunucusuyla ayrı bağlantı yapıyorsunuz.



1

Google CDN'yi kullanırken, bazen insanların ajax.googelapis.com gibi yazım hataları yaptığını da düşünün. Bu, potansiyel olarak gerçekten kötü bir xss (siteler arası komut dosyası oluşturma) saldırısı oluşturabilir. Aslında bir googlapis.com yazım hatası kaydederek bu test ettik ve çok hızlı bir şekilde kendimi javascript, haritalar, css vb istekleri sunan bulundu.

Google'a e-posta gönderdim ve onlardan benzer CDN yazım hatası URL'lerini kaydetmelerini istedim, ancak henüz duymadım. Bu, CDN'lere güvenmemek için gerçek bir neden olabilir, çünkü yazım hatası taleplerini bekleyen potansiyel olarak tehlikeli saldırganlar vardır ve bir xss yükü ile jquery vb.

teşekkür ederim


1
biraz konu dışı belki, ama ilginç bir nokta.
achairapart

1

Uygulamanın hangi endüstriyi hedeflediğine bağlı olarak, diğer kuruluşlar tarafından yönetilen bir CDN kullanmak istemeyebilirsiniz. Genellikle uyum, gizlilik ve gizlilik ile ilgili sorunları gündeme getirir.

Örneğin, Google Analytics'i güvenli bir uygulamaya dahil ettiğinizde, tarayıcı geçerli URL'yi yine de "yönlendiren" başlığı olarak gönderir. Oturum kimliği veya gizli belirteç gibi tüm tanımlayıcılar günlüklerinde görünebilir. Örneğin, 192.0.2.5 istemci IP adresi https: //healthsystem.example/condition/impotence ise , o zaman çok özel olduğu düşünülen bilgileri çıkarabilirsiniz.

Diğer durumlar, URL'deki hesap numarası, sosyal güvenlik numarası veya oturum bilgileri gibi sonuç bilgilerini içerir. Bu tür veriler uygulama dışında kullanılabileceğinden asla URL'de olmamalıdır.

Google, Microsoft veya Yahoo'ya güvenebilirsiniz, ancak kullanıcılarınız güvenmeyebilir.

Finans, Hukuk ve Sağlık Hizmetleri gibi endüstriler için BAA imzalayabileceğiniz bir satıcı (örn. Akamai) yardımıyla kendi CDN'nizi oluşturmak isteyebilirsiniz.


1

Kullanımınızı, hedeflediğiniz kullanıcıların genel konumlarına dayandırmanızı öneririm.

Siteniz genel herkesi hedefliyorsa, Google'ın CDN'sini kullanmak iyi bir seçim olacaktır.

Siteniz Çin'i de hedefliyorsa, Microsoft'un CDN'sini kullanmak daha iyi bir seçim olacaktır. Google sunucuları Çin hükümeti tarafından engellenmeye devam ettikçe, onları kullanan web sitelerini yüklenemez hale getirdiğinden, deneyimlerimden biliyorum.

* Çünkü özellikle Çin'e hitap etmek için cn.mysite.com gibi bölgeye özgü siteler oluşturabileceğinizi unutmayın, ancak kaynaklar ve zamanınız düşükse, dikkate değer.

Burada Microsoft CDN'nin tam listesi. http://www.asp.net/ajaxlibrary/cdn.ashx

O zamandan beri ajax.aspnetcdn.com olarak yeniden adlandırıldılar , bu da güvenlik duvarı kurallarına göre tıkanma olasılığını azaltır.


-3

Her ikisini de kullanırdım!

Google Jquery barındırma çok daha uzun sürdüğü için, insanların Microsoft'a kıyasla zaten önbelleğe alınma şansı çok daha yüksek, bu yüzden ilk önce olurdu.

Şahsen, böyle bir şey kullanırdım -

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
}

(Bu% 100 çalıştığından emin değilim, ama sadece fikri yazacaktım ve örnek değil - Bu, bağlantıyı bulamadığım için Google tarafından barındırılan Jquery'ye değil, Microsoft'a atıfta bulunuyor)


6
jQuery, sayfanıza getirmediğiniz sürece asla tanımlanmayacaktır. .Js dosyasını doe önbelleğe almak varsayılan olarak tüm tarayıcı sayfalarında kullanılabilir olmasını sağlar!
Falkayn

1
Bu çalışır: S Komut dosyasını yeniden okuyun - tanımlı değilse, bunu yazar ve yükler?
Wil

12
Neden insanlar "<scr" + "ipt ..."
anonim korkak

3
"Tarayıcıya, önceki diğer javascript miktarına ve genel kodun ne kadar iyi oluşturulduğuna bağlı olarak bu, ayrıştırıcının <script> ve </script> etiketlerini bir dize olarak çalıştırılabilir kod olarak yorumlamasını önlemek için yapılır yazılacak. "
SeanJA

2
Sorun, aktif olarak yüklemediğiniz sürecejQuery asla tanımlanmayacak olmasıdır. Senaryonuzda ilk dal daima çalıştırılacaktır (eğer yukarıda başka bir jQuery içerme durumu yoksa), betiği gereksiz kılar.
jensgram
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.