AWS CloudFront *, az erişilen dosyalar için yükleme süresini artırmalı mıdır?


9

CDN'lerde yeniyim ve CloudFront ile denemeler yapıyorum. Her şeyi ayarladım ve her şey iyi çalışıyor gibi görünüyor. Bir sayfada statik bir görüntü oluşturabilir ve CloudFront dağıtımımdan buna erişebilirim. Özel bir kökeni kullanıyorum (yani bir s3 kovası değil).

Yine de performans açısından daha kötü olabileceğimden endişeleniyorum. Aynı 20 kadar görüntüyü CDN ile ve CDN olmadan yükleyen bir test sayfam var. Firebug'daki net panele bakıldığında, bu sayfayı ilk kez yüklediğimde, doğrudan kaynak sunucudan yüklenen görüntüler çok daha hızlı gelir. Sonraki sayfa yüklerinde CDN'nin faydaları belirginleşir - 3-5 yenilemeden sonra CDN, başlangıç ​​sunucusundan daha iyi sonuç verir.

Sitemizde her zaman popüler olan popüler bir sayfada bunun bir fayda olacağını görebiliyorum. Bir fayda beklemeliyim çünkü Seattle'dayım (Amazon'un köşesinde) ve sunucum CA'da.

Şey, birkaç dakika boyunca sayfadan ayrılıp sonra yeniden yüklersem, işler bir kareye geri döner ve CloudFront'un kaynak sunucudan daha kötü olması gerekir. Bu bekleniyor mu? İşler CDN "önbelleğinden" bu kadar çabuk çıkıyor mu?

Kurulumumdaki bir şeyin performansı düşürmesi mümkün mü? Yoksa CDN'nin yalnızca şu anda ortalama olarak birkaç saniyede bir erişilen içerik için net bir pozitif olacağı gerçeği mi?

(çapraz AWS forumundan gönderildi çünkü SO'nun geri dönüş süreleri boyunca sonsuza dek şımarık oldum)

GÜNCELLEME:

CloudFront performansı hakkında sorularınız varsa, aşağıda incelenmeye değer iki iyi yanıt vardır. Geçenlerde benim özel sorun için bir açıklama olsa da bahsedilmedi bulundu. 5 Dakikada bir gözetim olarak ttl bırakmıştı. Ayrıca özel bir kaynak kullandığımdan, gerçek Amazon CloudFront etki alanına çözümlemek için yetkili ad sunucusuna ek bir gidiş dönüş var. Şimdi TTL ayarı 12 saate döndü, uzun yüklerin daha nadir gerçekleştiği görülüyor.


Evet, CloudFront'un doğrudan hızlı bir sunucuya gitmekten daha yavaş olması mümkündür, çünkü CloudFront, Amazon'un çoklu DNS çözünürlüğü katmanları vb. İle uygulama şekli nedeniyle, orada en yavaş CDN'lerden biridir. dünyanın herhangi bir yerinde bulun ve sizin için uygun olup olmadığına karar verin - test için webpagetest.org'u kullanın .
Jesper M

Yanıtlar:


5

Cloudfront, yanıtlarda "X-Cache: Cloudfront'tan vur" gibi yanıtlarda üstbilgi ayarlar. Muhtemelen, dosyanız yönlendirilmiş olduğunuz düğümün önbelleğinde değilse "Bayan" diyecek.

Dosyalarınızın yeterince popüler olmaması mümkündür, bu nedenle 24 saat geçmemiş olsa bile CloudFront'un önbelleğinden daha popüler içerikle çıkarılırlar. Ayrıca, IO aşırı yüklemesi veya belirli bir CloudFront düğümü içindeki başka bir durumun erişimi yavaşlatması da mümkündür. Cloudfront, Akamai veya LimeLight ile karşılaştırıldığında çok ucuzdur. En kötü performans ve garantili servis seviyeleri, daha pahalı oyuncuları kullanmanın iki sebebidir.

Üretimde buluta sadece bir popüler dosya koyarak bir test yapardım ve daha sonra CloudFront'un isabetleri gösterip göstermediğini görmek için periyodik testleri kullanırım (ayrıca toplam işlem süresini de kaydederim).


Soruyu gördüğüm mükemmel sayı için başka bir potansiyel açıklama ile güncelledim, yani TTL ayarını 5 dakikalık düşük ayarda bırakmıştım, ancak 12 saate geri döndüğümde bunları gördüğümü sanmıyorum ara sıra mükemmel konular.
Greg

7

Bu mümkün. Bununla birlikte, bir CDN'nin amaçlarından biri ölçeklenebilirliktir. Aynı anda 100 ziyaret veya bir seferde 1 milyon ziyaret gerçekleştirirseniz CDN'nin de aynı performansı göstermesini bekleyebilirsiniz.

Kurulumunuz ilerledikçe, verdiğiniz bilgilerle bildiğim hiçbir şey yok, ancak yukarıdaki noktanın bir CDN'yi bu kadar değerli yapan şey olduğunu düşünüyorum. Çok fazla trafik almayan bir site oluşturuyorsanız, CDN olmadan daha iyi durumda olabilirsiniz. Bununla birlikte, medyanızın sunumunu başka bir sunucuya geçirdiğiniz için çok fazla trafik alırsanız CDN web sunucunuzda daha hafif bir yük sağlar. Son bir nokta, iyi bir CDN (ve Amazon'unki), içeriğinizi istekte bulunan kişiye en yakın yerden sunmak için kapsamlı ağlarını kullanacaktır. Çoğu durumda, içeriği istekte bulunanın İSS'sinden sunabilirler, yani ÇOK hızlı yükleme süreleri.

Umarım yardımcı olur.


Teşekkürler Jesse - çok yararlı. Ölçeklendirmeyle ilgili nokta iyi değerlendirilmiştir. Ve büyük bir fark yaratabilmesi için yeterli trafiğe sahibiz. Yine de önbellek politikasını bilmek isterim. CDN'nin NASIL KURULMASI ve özellikleri hakkında çok az bilgi buldum. Örneğin, çok seyrek erişilen eski içeriği (CDN'den) hariç tutmam gerekip gerekmediğini merak ediyorum.
Greg

Greg - İçeriği hariç tutmak için, belki finansal nedenlerden başka bir argüman görmüyorum. Bununla birlikte, Amazon'daki nesnenizin önbellek başlıklarını kontrol edebilirsiniz. Şuna bakmayı deneyebilirsiniz: stackoverflow.com/questions/269840/…
Jesse Bunch

Bu, herhangi bir normal web sitesinin medyasında yaptığınız gibi, ileride sona erecek olan üstbilgileri belirtmenize olanak tanır.
Jesse Bunch

Tekrar teşekkürler. Bu önbellek denetimi bağlantısı durumumla ilgili değil çünkü s3 yerine özel bir kaynak sunucu kullanıyorum. Ama asıl geçerlidir ve ben çok ileride sona erecek başlıkları ayarlamak. BTW, Amazon'un dokümanları içeriğin 24 saat önbellekte yaşadığını söylüyor, ancak deneylerim farklı bir şey olduğunu gösteriyor.
Greg

1

Yanlış anladım mı? Önbellek kontrolü, uç konumlar onları S3'ten yeniden yüklemeden önce uç konumlarda ne kadar süre yaşayacağını yönetmiyor mu? Yani S3 veya kendi kökeninizi kullansanız da durumunuzla alakalı mı? Hayır?

Amazon SSS diyor:? "Önbellek denetim başlığı ayarlanırsa S. ne kadar süre Amazon CloudFront Varsayılan olarak kenar yerlerde dosyalarımı tutacak, bu daha bir istek aldığında her dosyanızın güncelleştirilmiş bir sürümü için her kenar konum kontrolleri Bir dahaki sefere 24 saat sonra başlangıç ​​noktasını bu dosyadaki değişiklikler açısından kontrol etti ve buna “son kullanma süresi” denir. Bu sona erme süresini, dosyalarınızdaki önbellek denetim başlıklarını başlangıç ​​noktanızda ayarlayarak 1 saat veya istediğiniz kadar uzun süre ayarlayabilirsiniz Amazon CloudFront, bu önbellek denetim başlıklarını, Dosyanız çok sık değişmezse, uzun bir süre sonu ayarlamak ve dosyalarınızdaki güncellemeleri yönetmek için bir sürüm sistemi uygulamak en iyi yöntemdir. "

[Son cümlenin "50 yıla ayarlarsanız ve daha sonra dosyayı değiştirmek istiyorsanız zor şans" anlamına geldiğini varsayıyorum.]

Ana içeriği statik içeriği barındırdığı bir CDN kullanmıyor mu? Eğer öyleyse, bir günden daha uzun TTL kullanmak yardımcı olur mu? Neredeyse her şey için (tüm resimler ve CSS), Cache-Control = "max-age = 604800, public, revalidate" (yani 1 hafta) kullanıyorum. Deneyimlerime göre, S3'e yeni sürümler yüklersem dosyaların değiştirilmesi bir hafta kadar sürebilir.

Bu yardımcı olur umarım. [BTW: Daha genel noktanızda, bir CDN'nin düşündüğünüz kadar performansa yardımcı olup olmadığını merak ediyorum. Tüm sitemi (CDN dahil) süper hızlı bir sunucuya taşımak ve öğrenmek için bazı testler yapmak üzereyim.]


Önbellek denetiminin, içeriğin kenarda ne kadar süre tutulacağını etkilediğinden emin olursunuz. TTL ayrı bir konudur. TTL, alan adına atanan IP adresinin önbelleğe alınmasını kontrol eder. Bu nedenle, statik dosyanın kenarda önbelleğe alınıp alınmadığına bakılmaksızın, sunucu dosyanın URL'sini ilk gördüğünde bu etki alanının IP adresini bulması gerekir. 1 günlük TTL ile, yakındaki bir sunucunun DNS önbelleğinde bu bilgilere sahip olması muhtemeldir. 5 dakikalık bir TTL ile bu çok daha az olasıdır ve kökeni sunucuma tam bir gidiş-dönüş gereklidir (dosya için değil, URL'yi çözmek için) ..
Greg

Ah tamam teşekkürler. DNS TTL ve önbellek kontrolünü karıştırıyordum :)
Chris W

1

CDN kullanmanın nedenleri,

  • Statik içerik - seyrek veya kontrollü güncellemeler
  • Dünyada görüntülendi
  • Sık erişilen

Web sitemize nadiren sizin durumunuz olarak erişilir, ancak web sitemizi tüm dünyada talep eden bir izleme hizmeti kurulumumuz vardır. Böylece CDN önbelleklerini sıcak tutar. Ayrıca basit ve CDN kabiliyetini gösteren olgumuzu da paylaşmak istiyorum.

Ayrıca, godaddy sunucusu için 7 $ (aylık dalgalanmalarla başa çıkamayan) yerine aylık 2.2 $ ücret bekliyoruz.

Ortalama Sayfa Yükleme Süreleri

Ortalama Sayfa Yükleme Süresi Dağıtımı

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.