JQuery'yi yerel olarak barındırmanın avantajları ve tuzakları [kapalı]


85

Şu anda jQuery ve jQueryUI (ve jQueryUI CSS) kitaplıklarını google CDN'den çekiyoruz. Bunu sevdim çünkü arayabilirim google.load("jquery", "1");
ve en son jQuery 1.xx kullanılacaktır.

Şimdi güvenlik nedeniyle kütüphaneleri yerel olarak çekeceğim.

Bunları yerel olarak çektiğim için mutluyum ama dikkat etmem gereken diğer faydaların ve tuzakların neler olduğunu merak ediyorum.


6
hangi güvenlik sorunlarından bahsediyoruz?
Ascherer

Ben sormadım Sanırım bu çok fazla Güvenlik değil ama gmail vb. Güvenlik duvarı ile bant genişliğini kontrol etmeye çalışıyor
orolo

Yanıtlar:


109

Bunları bir CDN'de bulundurmanın ana yararı, dosyaların kendi web sitenizden indirilen dosyalara paralel olarak indirilebilmesidir. Bu, her sayfadaki gecikmeyi azaltır. Yani, bunun diğer tarafı, yerel olarak barındırmanın bir tuzağı - artan gecikme . Bunun temel nedeni, tarayıcıların aynı web etki alanına aynı anda yapabilecekleri bağlantı sayısının sınırlı olmasıdır. IE6'da bu, varsayılan olarak aynı etki alanına 2 eşzamanlı bağlantı olarak ayarlanmıştır - IE'nin tüm açık pencereleri arasında paylaşılır !! IE8 + 'da iyileştirildi, varsayılan olarak FF / Chrome ile satır içi olan 6'ya ayarlandı, ancak yine de çok fazla görüntünüz varsa ve sprite kullanmıyorsanız, ağır gecikme yaşayacaksınız.

Bir CDN kullanarak, en son sürümü almaktansa kitaplık sürümünü her zaman açıkça ayarlardım . Bu, yeni sürümlerin kodunuzu kırma riskini azaltır. JQuery ile pek olası değil, ama mümkün.

CDN kullanmanın diğer ana yararı , sitenizdeki trafiğin azaltılmasıdır . GB başına ödeme yapıyorsanız veya sınırlı kaynaklara sahip bir sanal sunucu üzerindeyseniz, içeriğinizin bir kısmını genel bir CDN'de topladığınızda genel site performansının arttığını ve barındırma maliyetlerinin düştüğünü görebilirsiniz.

@ Xaver tarafından bu sorunun diğer cevabını da okuduğunuzdan emin olun. Bu çok iyi bir numara


5
Kitaplık sürümünü açıkça ayarlamanın bir başka yararı da Google'ın ona daha uzun bir önbellek süresi vermesidir, örneğin 1.9.1'i belirtmek, yalnızca 1.9 istemekten daha uzun bir önbellek ömrü verecektir (çünkü yeni bir jQuery 1.9 sürümü yayınlanabilir ancak 1.9.1 her zaman aynısı).
Barry

uhhh - revaxarts ? Böyle bir cevap görmüyorum, ne güncel ne de silinmiş. "Çok iyi numara" nedir?
ashleedawg

145

Her zaman Google'ın CDN'sini (İçerik Dağıtım Ağı) kullanıyorum. Ancak çevrimdışı olması durumunda:

<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'nin jQuery'sini alın ve gerekirse yerelde yedekleyin

Düzenleme : IE6'yı desteklemeniz gerekmiyorsa ve sitenizde kısmi https kullanımı varsa, http'yi de kaldırabilirsiniz:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>


25
XVIDEOS şu anda bu çözümü kullanıyor: P
Shougo Makishima

Burada bir şeyi kaçırmış olmalıyım ... Bu yaklaşım, CDN yüklü jQuery'nin sonraki satır ( !window.jQuery...) yorumlanmadan önce yükleneceğini ve yorumlanacağını varsaymaz mı ? <script>etiketler eşzamansız olarak işlenir, değil mi?
rinogo

2
<script>etiketler eşzamanlı olarak işlenir! İkinci satırda jQuery halihazırda yüklenmelidir, ancak her ihtimale karşı yerel olarak yüklemek için bazı JS enjekte etmemiz gerekir. document.writeJQuery zaten varsa yürütülecek asla.
Xaver

24

Diğerleri faydaları karşıladı. Tuzaklar:

  • Yalnızca kendi sunucunuzdan içerik eklerseniz, bu, sitenizin çalışması için çalışması gereken ve güvenlik duvarları vb. Tarafından engellenmeyen bir sunucudur. Üçüncü bir partiden komut dosyası çekin ve şimdi sitenizin çalışması için çalıştırılması ve engelinin kaldırılması gereken iki sunucu var.

  • Aldığınız herhangi bir site <script>, kullanıcının sitenizdeki deneyimini tamamen kontrol edebilir. Google kendini kötü hissediyorsa, jQuery kopyasına tuşlara bastığınız şeyleri kaydetmek, web izleme veritabanlarına bağlamak için bulunduğunuz sayfadaki kişisel bilgileri çalmak ve size "Google'ı seviyorum!" her biçime yorumlar vb.

Google muhtemelen bunu gerçekten yapmayacak, ancak bu sizin kontrolünüz dışında olan bir faktör ve kesinlikle diğer komut dosyası barındırma hizmetlerinde endişelenmeniz gereken bir şey. Daha önce kötü amaçlı yazılım yükleyicilerle istatistik komut dosyalarının tehlikeye atıldığı olaylar yaşandı.

Üçüncü taraflardan herhangi bir komut dosyasını (sitenizin tek bir sayfasında bile olsa) eklemeden önce, söz konusu ana bilgisayar adında görünen tüm kullanıcı tarafından erişilebilir işlevler (web'e yönelik yönetici işlevleri dahil) ile onlara% 100 güvenmelisiniz.


21
Google bunu yapmazdı ... GOOGLE'I SEVİYORUM ... değil mi? :-p
JasCav

1
Güvenlik sorunları ile ilgili mükemmel noktalar.
Naltroc


1
İyi noktalar: uzaktaki bir CDN komut dosyasının nasıl saldırıya uğrayacağını ve sonra siteme çekileceğini hiç düşünmedim. Muhtemelen jQuery, jQueryUI, Boostrap, vb. Gibi büyük kütüphaneler için yaygın değildir, ancak belirtildiği gibi, daha küçük, daha az desteklenen kütüphaneler, özellikle güncel tutulmazlarsa kurban olabilir. İyi puan +1
twknab

14

Google CDN:

  • önbelleğe alma, performans için iyi, daha fazla kullanıcının zaten sahip olma ihtimali var ve paralel olarak indiriliyor
  • hiç değilse, heaver forbid cdn düşüyor. sarhoşsun.
  • yeni bir sürüm mevcut eklentilerinizi veya sitenizi bozarsa, bunu muhtemelen çok geç öğreneceksiniz

Yerel olarak:

  • ağa bağlı olmadan gelişme mümkündür
  • yine de küçültmeye ek olarak gzip ile bazı performans avantajları elde edebilir

5
ancak google'ın cdn'sinden yüklenen jquery u küçültülmüştür. Bir cdn kullanmanın bir başka artısı da dizin
yapınız

if a new version breaks your existing plugins or site, you'll know about it possibly too lateBundan kaçınmak için CDN bağlantısında sürümü belirtebilirsiniz.
Adam

13

Yerel sürümümü kullanmayı tercih ediyorum çünkü ne sağlayacakları konusunda kontrole sahip değilim. Örneğin, kullanıcılarımın google-analytics veya benzeri bir şeyden etkilenmesini istemiyorum, çünkü bu benim ülkemde yasal bir sorundur.


9

Avantajlar: (Özellikle Google'ın CDN'si için)

  1. Dosyalarınızla paralel olarak indirmeler. Diğer cevaplar bunu daha ayrıntılı olarak ele alıyor
  2. Google'ın Sunucuları, içeriği fiziksel olarak daha hızlı teslim edebilir
  3. Bir CDN'nin HTTP önbelleği evrensel olduğundan, ortak kitaplıklar ve çerçeveler zaten kullanıcının makinesinde olabilir tüm sitelerde
  4. Bant genişliğinizin büyük kitaplık dosyalarına hizmet vermeye gitmesi gerekmez

2

Neredeyse ona her şekilde bakarsanız Google'ın CDN'sini kullanmak iyi bir şeydir.

Performans iyileştirilecek (siteniz gerçekten meşgul olmadığı sürece oldukça marjinal de olsa) ve sunucularınızın iletmesi gereken veri miktarı azalacak (jQuery tam olarak indirilecek çok büyük bir şey olmasa da), vb.

Kullanmak istememenizin tek nedeni, Google'a güvenmemenizdir. Bunu kullanarak, Google'a sitenizin trafik profiline, aksi takdirde herkese açık hale getirmek istemeyebileceğiniz URL'ler hakkında bilgi dahil (örneğin, sitenizin güvenli alanları) etkili bir şekilde ek bilgi penceresi vermiş olursunuz.

Eğer güvenlik konusunda paranoyak iseniz, bu sizi onları kullanmama konusunda ikna etmek için yeterli olabilir (sonuçta, onu kendiniz barındırmak sitenizi tam olarak yavaşlatmayacaktır), ancak genel olarak çoğu insan pragmatik görüşü benimseyecektir. Google'ın siteleri hakkında yeterince bilgi sahibi olduğunu ve bunu eklemenin pek bir fark yaratmayacağını söyledi.


1

Muhtemelen bugünlerde azınlıktayım, ancak gerçekten ihtiyacınız olmadıkça CDN kullanmak istemediğinizi söyleyebilirim. Kullanmaya başlamak için temel faktörler:

  • Coğrafi kullanıcılar arası. Web sitenizi ABD'de barındırıyorsanız ancak görünür miktarda Avrupalı ​​kullanıcınız varsa - CDN yükleme süresini iyileştirecektir.
  • Çok sayıda kullanıcı ve \ veya büyük içerik, dolayısıyla bir ana sunucu artık yeterli değil. Herhangi bir porno-video web sitesi (veya isterseniz Netflix) aklınıza gelebilir. Video akışı ağır bir yüktür ve CDN ana sunucuda çok daha az yük olacaktır.

Ama ... önemli olan nokta şu ki, bu noktalar dünyadaki web sitelerinin% 90'ı için gerçekten geçerli değil. Bahse girerim dünya çapında milyonlarca çevrimiçi kullanıcısı olan Facebook değilsiniz, her saniye yüzlerce GB aktarılan Pornhub değilsiniz.

Web siteniz şehrinizdeki / ülkenizdeki kullanıcıları hedefliyorsa ve sahip olduğunuz kullanıcı sayısı için bir sunucunun kapasitesi yeterliyse - neden bir CDN isteyesiniz? Şehrinizdeki kullanıcılarınız için daha hızlıdır ve her şeyi ana sunucunuzdan yerel olarak almanız sizin için daha kolaydır.


Genel olarak CDN'lerle ilgiliydi, şimdi jQuery veya başka bir kitaplıkla ilgili asıl soruya daha yakın olalım.

Web sitenizin erişilebilir kalmasını ve bir yıldan uzun bir süre bakım gerektirmeden çalışmasını istiyorsanız, diyelim ki yerel olarak koyun. Günümüzde kütüphaneler, muhtemelen takip etmek istemeyeceğiniz çılgın bir tempoda güncelleniyor. Ve sonunda eski sürümler siliniyor. Dahası, tüm kütüphane ölebilir (muhtemelen jQuery için geçerli değildir).

Son deneyimlerime göre, web sitesinde TinyMCE'yi 3.xx'den (2012 tarihli) 5.xx'e (Bahar 2019 tarihli) güncelledim. Bu web sitesi mantığın bu bölümünde 7 (yedi!) Yıldır herhangi bir bakım gerektirmeden çalışıyordu. O zamanlar "küçültme" kavramı yoktu ve CDN'ler şimdiki kadar yaygın değildi. Ancak yaygın olsalar bile - bundan 3-5-10 yıl sonra ne olacağını asla bilemezsiniz. Genellikle web sitenizin bakımını yapmadan bile hayatta kalmasını istersiniz, değil mi? Ancak bugün jQuery'yi CDN'den alırsanız, bu bağlantı 5 yıl içinde (ve muhtemelen) kopabilir.

@ Xaver'ın önerdiği gibi CDN VE yerel sürüme geri dönüş ile çözüm, iyi bir uzlaşma olabilir. Ama ... belki sadece CDN bağlantısından kurtulun? ;)


0

Bana göre bu gerçekten ne kadar kontrole sahip olmak istediğinize bağlı. Benim gibiyseniz ve çalışırken ve seyahat ederken yerel ev sahibi üzerinde gelişmeniz gerekiyorsa. Jquery dosyalarının yerel olması, Google'da veya başka bir yerde barındırılmasından daha iyidir.

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.