Коли використовувати та не використовувати ETags


9

Я щойно переглядав наш сайт на WebPageTest.org, і одна з їхніх рекомендацій щодо прискорення веб-сайту:

Заголовки ETag, як правило, не повинні використовуватися, якщо у вас немає чітких причин їх необхідності

Мені було цікаво, що це означає. Чи означає це, що статичний вміст, який ви знаєте, не змінюватиметься, не повинен мати їх, чи це означає, що вміст, який ви знаєте, буде змінюватися регулярно, не повинен їх мати, або це означає, що ви не повинні використовувати їх, як правило, якщо у вас немає конкретна потреба.

Якщо це останнє, то коли саме час їх використовувати? Дякуємо за будь-яку допомогу.

Відповіді:


8

ETags - це альтернатива (але може використовуватися в поєднанні з) "Last-Modified-Time" для визначення валідизації кешу.

Клієнт може надіслати попередню умову, як-от if-match або if-none-match на основі ETag. Це стосується не лише GET-запитів (як це робить webpagetest.org), ви можете використовувати "умовно-опунктивні оновлення", щоб запит PUT мав попередню умову і не буде виконувати операцію оновлення, якщо ресурс оновлювався з моменту ETag останній набутий.

Простіше кажучи: ви натискаєте на редагування сторінки вашої CMS, ваш друг натискає на редагування сторінки на вашій CMS, ваш друг виконує їх редагування і звернення зберегти, і, нарешті, ви натиснете зберегти - без заголовка ETag або Content-MD5 HTTP вам знадобиться щоб винайти колесо, щоб запобігти виникненню проблем (наприклад, ви стираєте зміни друзів), це рішення вже є частиною протоколу HTTP, і тому є сенс просто використовувати його.

Як правило, я погоджуюся з AOL (який керує webpagetest.org) щодо їх одноразового підходу - краще не забивати заголовки HTTP криптованими рядками (ETags, як правило, не симпатичні чи людські), коли секунда різниці ( який може виявити Last-Modified-Time) для роботи.

Якщо сторінка оновлюється кілька разів на секунду, і вам абсолютно потрібна остання найточніша версія для відображення, ви можете поекспериментувати з іншими рішеннями, ніж HTTP GET або просто використовувати ETags.

Будьте уважні, що ваші ETags не включають файлову систему, зміну конфігурації сервера тощо інформацію (наприклад, inode, який за умовчанням застосовується в Apache), інакше у вас виникнуть проблеми, коли є два сервери (ETags з кожного не збігаються).


Це добре. Є один приклад, в якому я не впевнений: якщо у вас є кілька версій вмісту на одному URI (наприклад, у мобільній версії або в Internet Explorer), ETags можуть використовуватися для пошуку КОЖНОЇ версії відповідності (отже, вона називається if- none-match not if-not-match) - залежно від того, кого ви запитуєте, є різні відповіді (наприклад, немає одного постійного URI для декількох представлень тощо).
Metalshark

7

Перефразовуючи відмінну оцінку плагіну Coding Horror для плагіна YSlow Firebug (який, як видається, WebPageTest.org використовує як основу для їх оцінки):

"Yahoo - це один із найзайнятіших веб-сайтів у світі - його проблеми, мабуть, не є вашими проблемами".

Якщо ви не маєте справу з мільйонами унікальних матеріалів у вашій мережі з збалансованою навантаженням щодня, є хороший шанс, що надані пропозиції не є правильним вибором при оптимізації вашого сайту.


Я вдячний за коментар, але ви помиляєтесь. Стів Саундэрс пояснює тут: stevesouders.com/blog/2010/09/07/webpagetest-org-and-page-speed (Він великий прихильник корисних удосконалень - тобто не лише вдосконалень, які працюватимуть для Google.) Наш сайт безумовно, досить великий, щоб відчути збільшення швидкості від таких покращень (і вже є).
Джанго Райнхардт

2
Розширення yslow firebug тепер включає тест для менших сайтів, що набагато реальніше для більшості сайтів.
Джон Конде

1
@Django Reinhardt - Я переформулював свою відповідь, це правда, що багато пропозицій є дійсними для будь-якого сайту, але, зокрема, ETags є спірним, оскільки, у випадку Y!,
Ця

Надане вами посилання містило посилання на опис Yahoo ETags ( developer.yahoo.com/performance/rules.html#etags ), яке чудово відповідає на мої запитання. (Так, нам, мабуть, було б краще не обслуговувати ETags.) Дякую.
Джанго Райнхардт

1
@Django: Якщо у вас є кілька серверів, то ETags може бути проблемою. Однак, якщо один і той самий файл завжди повертає той самий ETag, то це прекрасно. Дивись також: webmasters.stackexchange.com/questions/1459/…
НезадоволеністьГота
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.