ETaglerin ne zaman kullanılması ve kullanılmaması


9

Sadece WebPageTest.org adresindeki sitemize bakıyordum ve bir web sitesini hızlandırmak için önerilerinden biri:

ETag başlıkları, bunlara ihtiyacınız olması için açık bir nedeniniz olmadığı sürece genellikle kullanılmamalıdır

Bunun ne anlama geldiğini merak ediyordum. Eğer onları olmamalıdır değişen olmayacak biliyorum statik içerik anlamına veya bunu onlara sahip olmamalıdır düzenli olarak değişen olacağını biliyorum ortalama içeriği mi yoksa bunu siz bunları kullanmaması gerektiğini ifade ediyor mu genelde bir olmadıkça özel ihtiyaç.

İkincisi ise, bunları kullanmak için doğru zaman ne zamandır? Herhangi bir yardım için teşekkürler.

Yanıtlar:


8

ETag'ler, önbellek doğrulamasını belirlemek için "Son Değiştirme Tarihi" ne bir alternatiftir (ancak bununla birlikte kullanılabilir).

Müşteri, ETag'a dayalı if-match veya if-none-match gibi bir ön koşul gönderebilir. Bu sadece GET istekleri için değildir (webpagetest.org'un yaptığı şeydir), "fırsatçı güncellemeyi" kullanabilirsiniz, böylece bir PUT isteğinin bir ön koşulu vardır ve ETag'ın ardından kaynak güncellenmişse güncelleme işlemini gerçekleştirmez son satın alındı.

Basitçe söylemek gerekirse: CMS'nizdeki bir sayfada düzenlemeyi vurursunuz, arkadaşınız CMS'nizdeki bir sayfada düzenlemeyi vurur, arkadaşınız düzenlemelerini gerçekleştirir ve kaydetme işlemini gerçekleştirir ve nihayetinde bir ETag veya Content-MD5 HTTP üstbilgisi olmadan kaydet'i vurursunuz ortaya çıkan sorunları (arkadaşlarınızın değişikliklerini silmeniz gibi) önlemek için tekerleği yeniden icat etmek için çözüm zaten HTTP protokolünün bir parçasıdır ve bu nedenle sadece kullanmak mantıklıdır.

Genel olarak "tek beden herkese uyar" tavsiyesinde AOL (webpagetest.org çalıştıran) ile hemfikirim - bir saniye fark olduğunda (ETag'ler genellikle güzel veya insan tarafından okunabilir değildir) HTTP başlıklarını tıkamak daha iyidir. (Son Değiştirme-Zamanını tespit edebilen) eldeki iş için yapacaktır.

Bir sayfa saniyede birkaç kez güncelleniyorsa ve görüntülenmesi için kesinlikle en son en doğru sürüme ihtiyacınız varsa, HTTP GET'ler dışındaki çözümleri denemek veya yalnızca ETag'leri kullanmak isteyebilirsiniz.

ETag'lerinizin dosya sistemi başına, sunucu yapılandırma değişikliği başına vb. Bilgileri (Apache'de varsayılan olan inodes gibi) içermediğinden emin olun, aksi takdirde iki sunucu olduğunda (her birinden alınan ETag'ler eşleşmez) sorun yaşarsınız.


Bu iyi. Emin olmadığım bir örnek var: bir URI'da (mobil veya Internet Explorer sürümleri gibi) birden fazla içerik sürümünüz varsa, ETag'ler HER sürümde bir eşleşme için arama yapmak için kullanılabilir (bu nedenle if- none-match (eşleşmiyorsa eşleşmez) - kime sorduğunuza bağlı olarak farklı yanıtlar vardır (çeşitli temsiller için tek bir kalıcı URI'niz yok gibi).
Metalshark

7

Kodlama Korku'nun YSlow Firebug eklentisi hakkındaki mükemmel değerlendirmesini ( WebPageTest.org'un değerlendirmelerinde temel olarak göründüğü anlaşılmaktadır) açıklama yapmak için:

"Yahoo dünyanın en işlek web sitelerinden biridir - problemleri muhtemelen sizin problemleriniz değildir ."

Her gün yük dengeli ağınızda milyonlarca benzersiz işlem yapmıyorsanız , sitenizi optimize ederken sunulan önerilerin doğru seçeneklerin bulunmaması ihtimali yüksektir .


Yorumu takdir ediyorum, ama yanılıyorsun. Steve Sounders burada açıklıyor: stevesouders.com/blog/2010/09/07/webpagetest-org-and-page-speed (O, yararlı iyileştirmelerin büyük bir savunucusu - yani yalnızca Google için çalışacak iyileştirmeler değil.) Sitemiz kesinlikle bu tür gelişmelerden bir hız artışı hissetmek için yeterince büyük (ve zaten var).
Django Reinhardt

2
Yslow firebug uzantısı artık çoğu site için çok daha gerçekçi olan daha küçük siteler için bir test içeriyor.
John Conde

1
@Django Reinhardt - Öyle doğrudur, benim cevap adlarını değiştirdik birçok ! Önerilerden herhangi bir site için geçerlidir, ancak özellikle ETag öğelerini Y, çekişmeli çünkü 'ın durumda, yük dengeleme ile özellik çatışmaları
danlefree

Sağladığınız bağlantı, Yahoo'nun sorularıma güzel cevap veren ETags ( developer.yahoo.com/performance/rules.html#etags ) açıklamasına bir bağlantıya sahipti . (Evet, ETag'lere hizmet etmememiz daha iyi olur.) Teşekkürler.
Django Reinhardt

1
@Django: Birden fazla sunucunuz varsa, ETag'ler bir sorun olabilir. Ancak, aynı dosya her zaman aynı ETag'ı döndürdüğü sürece, gayet iyi olur. Ayrıca bakınız: webmasters.stackexchange.com/questions/1459/…
DisgruntledGoat
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.