CDN Yedekleri için Yerel JS ve CSS Kaynakları Sağlama


13

Verilen

  • CDN'ler iyi bir şeydir çünkü istemciye daha yakın kaynaklar sunabilir, istemci bunları önbelleğe alabilir ve kendi sunucunuzdaki yükü azaltabilirsiniz.
  • Son tarayıcılarda, üçüncü taraf sunucularından kaynak yüklemek Alt Kaynak Bütünlüğü (SRI) sayesinde güvenliği azaltmaz .
  • CDN'ler bazı ülkelerde kapalı veya engellenmiş olabilir ve çevrimdışı geliştirilirken kullanılamaz 1 .

Bence CDN'leri kullanmak zor, ama aynı zamanda bunların kullanılamamalarına da hazırlıklı olmak gerekiyor. Bu blog yazısı , yedekleri sağlamak için farklı yaklaşımlara güzel bir giriş sunuyor. Temel örneğe bakarsanız, sadece jQuery ve Bootstrap için yedekler sağlamak için zaten biraz kazan plakası kodu içerdiğini görebilirsiniz; tercih edilen çözüm , geçen yıl büyük ölçüde korunmamış gibi görünen Fallback.js'yi kullanmanızı önerir. . Benzer şekilde, konu için en alakalı SO sorusu sadece jQuery için bir geri dönüş sağlamakla ilgilidir.

Ancak, çoğu gerçek dünya projesinde, 5 veya daha fazla js / css kaynağım olmasını beklerim, bu yüzden hepsine geri dönüş sağlamak için dağınık bir levhayı tekrarlamak zorunda kalmamanız gerektiğini hissediyorum. Ayrıca, her kaynak eklediğinizde veya güncellediğinizde, artık

  • CDN bağlantısını güncelleme
  • Yerel yedek kopyayı manuel olarak indirerek veya npm / bower config'ta sürümü değiştirerek güncelleyin
  • Yedek bağlantıyı güncelleme
  • SRI karma değerini güncelleme

Oysa İdeal Dünyası , eklemem / tek yapılandırma dosyasında kaynak güncellemek ve tüm diğer adımlar (güncelleme şey kırdı olmadığını görmek için ve daha sonra çalıştırmak testleri) otomatik olarak çalıştırmak olması beklenebilir.

Bunu başarmak için önceden belirlenmiş bir iş akışı var mı?

Yoksa CDN'ler ve özellikle SRI hala çok mu yeni?

Ya da çoğu insan CDN kaynakları için geri dönüş sağlamayı umursamıyor mu?


1. Her ne kadar CDN'lere dayanmayan bir geliştirici geliştirebilseniz de, bunun da sürdürülmesi gerektiğinden bir tür geri dönüş olduğunu düşünüyorum.


CDN'lerle kendim uğraşmadım, ancak bu adımlardan biri hariç hepsini standart dağıtım sürecinin bir parçası olarak otomatikleştirmenin mümkün olması gibi görünüyor.
Ixrec

zaten mükemmel çalıştığı için Fallback.jsbakımsız mı? Yazılım zaten çalışıyorsa her 5 dakikada bir değiştirilmesine gerek yoktur.
Robert Harvey

1
Hayır, mükemmel çalışmadığını iddia ediyorum, aksi takdirde yazarın neden yeni bir sürüm 2 üzerinde çalışmaya başlayacağını görmüyorum. Ayrıca bir web sitesinin düzgün çalışması için çok gerekli olan bir kütüphanenin sürekli test edilmeli ve geliştirilmelidir. Anladığım kadarıyla, farklı tarayıcılara daha fazla test ve CI eklemek aslında sürüm 2'nin ana hedeflerinden biri. Ayrıca şu anda SRI için destek yok.
ValarDohaeris

Yanıtlar:


1

Bu tür bir esnekliğe ihtiyaç duyabilecek daha büyük sitelerin CDN'leri nasıl kullandığını belki de yanlış anladığınızı düşünüyorum.

sadece jQuery veya bazı görüntüleri barındırma meselesi değil. Sitenin çoğunluğu CDN'de barındırılacak, yalnızca ödeme sayfaları veya alışveriş sepetleri gibi dinamik olarak oluşturulmuş şeyler 'birincil web çiftliklerinde' barındırılacak

Bunlar bile sunucu tarafı işlemeye çarpmadan kullanıcıya özel şeyler görüntülemek için JS ve çerezlerle yerel olarak işlenmeye gittikçe daha fazla hareket ediyor.

Bir CDN başarısız olursa ve web sunucunuza iletilen tüm trafiği almaya başlarsanız, muhtemelen düşecektir, aksi takdirde gerçekten CDN'ye ihtiyacınız yoktu.


Otomatik olarak ölçeklenen bir CDN yedeklemeniz olabilir. Ve CDN ile trafik hakkında değil, aynı zamanda daha rahat ve maliyet azaltma hakkında. Bence CDN düşük trafikli web sitelerinde de mantıklı, neden olmasın?
Sjoerd222888

1

CDN'mizde çalıştığım site, site için giderek daha önemli hale geldi. Başlangıçta bunu Images / CSS / JS'yi önbelleğe almak için kullandık. Bu aşamada, bu kaynakların ana bilgisayar adını www.mysite.com/ adresinden www.cdn.com/ adresine yeniden yazdıran bir yapılandırma özelliğimiz vardı, bu nedenle CDN düşerse bu ana makine değerini değiştirebilir veya tamamen kapatabilir ve bırakabiliriz. web sunucumuza işaret eden URL'ler.

Ancak, kişiselleştirilmiş içeriğin AJAX aracılığıyla yüklenmesiyle temel olarak tüm sayfaları önbelleğe almaya başladık. CDN sitemiz için gerekli hale geldi ve kendi HTTP sunucularımızda olabildiğince çok çalışabildik. CDN'ye iyi paramızı kısmen esneklik ve SLA'nın çalışma zamanı vaatleri nedeniyle ödüyoruz, bu nedenle geri dönüşlere zaman ve çaba harcamak zaman kaybı gibi görünüyor. Sağlayıcımızla ilgili büyük bir sorun olması durumunda yerinde bir DR planımız var, ancak bu basit bir otomatik süreç değildir ve yedek CDN'ye taşınırken bir kesinti dönemi görecektir.

Bu nedenle, sorunuzun yanıtında CDN'nin sitenize ne kadar entegre olduğuna bağlıdır. Yalnızca CDN'ye yerleştirdiğiniz varlıklarınızsa ve http sunucularınızın bu içeriği sunma yükünü kaldıracağını varsayarsak, CDN'yi açmak veya kapatmak için bir yapılandırma anahtarı kullanabilirsiniz. Bir izleme aracıyla birleştiğinde, bu anahtarın açık veya kapalı olmasını otomatikleştirebilirsiniz.


0

CDN kullanmak için 3 çok önemli neden görüyorum:

  1. Uzak bölgelerdeki kullanıcılar için ağ gecikmesini azaltın. Küresel kitleye yönelik bir web siteniz olduğunda, Kuzey Amerika'daki hostinginiz Güney Asya'daki, özellikle Çin'deki kullanıcılar için hızlı görünmüyor. Kullanıcı deneyimindeki fark o kadar büyük olabilir ki, kullanıcıların sitenizi kullanmasını engelleyecektir. Bu durumda işletmeniz için çok bölgeli CDN gerekli olacaktır.

  2. Yüksek kullanılabilirliğe sahip kaynaktan mümkün olduğunca çok hizmet verin. Güvenilirlik, bulut CDN'lerini kullanmanın başlıca nedenlerinden biridir - trafik otomatik olarak kullanılabilir düğümlere yönlendirilir ve tüm bulut bölgesi kapalıysa trafiği yeniden yönlendirmek için bazı ek önlemler ekleyebilirsiniz.

  3. CDN'nin bakımı, dinamik içerik sunan uygulama sunucularından daha kolaydır ve daha ucuzdur. Yukarıda belirtilen sorunlarla uğraşmak zorunda kaldığınızda, paradan tasarruf etmenin doğal bir yoludur.

Bütün bunlar, CDN'nin amacının içeriğinizin son kullanıcılara erişimini artırmaktır. CDN bir nedenle başarısız olursa veya yavaşlarsa, istemci tarafındaki geri dönüş sayfa yükünü önemli ölçüde artıracaktır, çünkü önce erişilebilir olmayan kaynağı almaya çalışacaktır. Daha iyi çözüm, "{CDN} /js/jquery-version-min.js" gibi bağlantılarda temel URL'nin yerine geçecek sunucu tarafı tasarımına sahip olmaktır. Bu, CDN sistem durumu denetimi başarısız olursa trafiği CDN yerine uygulama sunucusuna yeniden yönlendirmeye izin verir - istemciler gereksiz istekler gerçekleştirmez ve doğrudan istemci tarafındaki çözümle ilgili geri dönüşünüz olacak olan uygulama sunucusuna gider. Bu ayrıca yerel ve aşamalı dağıtım sorunlarını da çözecektir,

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.