Kapan harus menggunakan dan tidak menggunakan ETag

9

Saya hanya melihat situs kami di WebPageTest.org dan salah satu rekomendasi mereka untuk mempercepat situs web adalah:

Header ETag umumnya tidak boleh digunakan kecuali Anda memiliki alasan eksplisit untuk membutuhkannya

Saya bertanya-tanya apa artinya ini. Apakah ini berarti bahwa konten statis yang Anda tahu tidak akan berubah seharusnya tidak memilikinya, atau apakah itu berarti konten yang Anda tahu akan berubah secara teratur seharusnya tidak memilikinya, atau apakah itu berarti Anda tidak boleh menggunakannya secara umum kecuali Anda memiliki kebutuhan spesifik.

Jika ini yang terakhir, kapan waktu yang tepat untuk menggunakannya? Terima kasih atas bantuannya.

Django Reinhardt
sumber

Jawaban:

8

ETags adalah alternatif untuk (tetapi dapat digunakan bersama) "Last-Modified-Time" untuk menentukan validasi cache.

Klien dapat mengirim pra-kondisi seperti jika-cocok atau jika-tidak ada yang cocok berdasarkan ETag. Ini bukan hanya untuk permintaan GET (yang dilakukan oleh webpagetest.org), Anda dapat menggunakan "pembaruan oportunistik" sehingga permintaan PUT memiliki prasyarat dan tidak akan melakukan operasi pembaruan jika sumber daya telah diperbarui sejak ETag dibuat. terakhir didapat.

Sederhananya: Anda menekan edit pada halaman di CMS Anda, teman Anda hits edit pada halaman di CMS Anda, teman Anda melakukan edit dan klik save dan akhirnya Anda menekan save - tanpa header HTTP ETag atau Content-MD5 yang Anda perlukan untuk menemukan kembali roda untuk mencegah masalah yang terjadi (seperti Anda menghapus perubahan teman Anda) solusinya sudah menjadi bagian dari protokol HTTP dan oleh karena itu masuk akal untuk hanya menggunakannya.

Secara umum saya setuju dengan AOL (yang menjalankan webpagetest.org) pada saran "satu ukuran untuk semua" - lebih baik tidak menyumbat header HTTP dengan string samar (ETag umumnya tidak cantik atau tidak dapat dibaca manusia) ketika ada perbedaan kedua ( yang Terakhir-Dimodifikasi-Waktu dapat mendeteksi) akan melakukan untuk pekerjaan di tangan.

Jika halaman diperbarui beberapa kali dalam satu detik dan Anda benar-benar membutuhkan versi terbaru yang paling akurat untuk ditampilkan, Anda mungkin ingin bereksperimen dengan solusi selain GET HTTP atau hanya menggunakan ETag.

Hati-hati bahwa ETag Anda tidak termasuk per sistem file, per perubahan konfigurasi server, informasi dll (seperti inode yang default pada Apache) jika tidak Anda akan memiliki masalah ketika ada dua server (ETag dari masing-masing tidak akan cocok).

Metalshark
sumber
Tidak apa-apa. Ada satu contoh yang saya tidak yakin: jika Anda memiliki beberapa versi konten semua pada satu URI (seperti versi mobile atau Internet Explorer) ETags dapat digunakan untuk mencari melalui SETIAP versi untuk pertandingan (maka itu disebut jika- tidak ada yang cocok bukan jika tidak cocok) - tergantung pada siapa Anda bertanya ada jawaban yang berbeda (seperti tidak memiliki satu URI permanen untuk beberapa representasi, dll).
Metalshark
7

Mengutip evaluasi Coding Horror yang luar biasa terhadap plugin YSlow Firebug (yang tampaknya digunakan WebPageTest.org sebagai dasar untuk evaluasi mereka):

"Yahoo adalah salah satu situs web tersibuk di dunia - masalahnya mungkin bukan masalah Anda."

Jika Anda tidak berurusan dengan jutaan unik di jaringan Anda yang seimbang setiap hari, ada kemungkinan bagus bahwa saran yang diberikan tidak semua pilihan yang tepat ketika mengoptimalkan situs Anda.

danlefree
sumber
Saya menghargai komentarnya, tetapi Anda salah. Steve Sounders menjelaskan di sini: stevesouders.com/blog/2010/09/07/webpagetest-org-and-page-speed (Dia adalah pendukung besar perbaikan yang bermanfaat - yaitu, bukan hanya perbaikan yang akan bekerja untuk Google.) Situs kami adalah pasti cukup besar untuk merasakan peningkatan kecepatan dari peningkatan tersebut (dan sudah ada).
Django Reinhardt
2
Ekstensi pembakar yslow sekarang termasuk tes untuk situs yang lebih kecil yang jauh lebih realistis untuk sebagian besar situs.
John Conde
1
@ Django Reinhardt - Saya menulis ulang balasan saya, memang benar bahwa banyak saran yang valid untuk situs mana pun, tetapi ETag khususnya kontroversial karena, dalam kasus Y !, fitur tersebut bertentangan dengan load-balancing
danlefree
Tautan yang Anda berikan, memiliki tautan ke deskripsi Yahoo tentang ETag ( developer.yahoo.com/performance/rules.html#etags ) yang menjawab pertanyaan saya dengan baik. (Ya, mungkin akan lebih baik bagi kita untuk tidak melayani ETag.) Terima kasih.
Django Reinhardt
1
@ Django: Jika Anda memiliki beberapa server maka ETag dapat menjadi masalah. Namun, selama file yang sama selalu mengembalikan ETag yang sama maka tidak apa-apa. Lihat juga: webmasters.stackexchange.com/questions/1459/…
DisgruntledGoat