Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.

ETag HTTP заголовок відповіді. Є ідентифікатором для поточної версії ресурсу. Він надає можливість створювати кеш більш ефективно, і запобігає перенапругам у системі, створюючи доступність простору інтернету. Щойно надійде відповідь що данні не змінювались, то нема потреби знову це завантажувати. 

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

Тип заголовку Заголовок відповіді
Прихований  заголовок Ні

Синтаксис

ETag: W/"<etag_value>"
ETag: "<etag_value>"

Вказники

W/ Optional
'W/' (чутливо до регістру) вказує виконати детальну перевірку. Детальна перевірка допустима, але рідше використовуєтся для порівняння. Строга валідація ідеально підходіть для порівняння, але має дуже складний алгорітм і шкодить ефективності. Для підвищення ефективності використовуються Etag значення двох копій одне й те самого ресурсу. Порівняння коротких фраз кодів, ніж порівнювати кожен байт файлу, є ефективна ідея.
"<etag_value>"
Унікальний хеш код ресурсу. Це звичайні набір символів ASCII у подвійних лапках (приклад "675af34563dc-tr34"). В звичайному випадку це хеш дати останньої модіфікаії, або це может бути будь який код. Наприклад, MDN викорустовує хеш шістнадцятирічних символів контенту вікіпедії.

Приклади

ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
ETag: W/"0815"

Виникаючі повітряні колізії

За допомогою ETag і з заголовком If-Match, можливо натрапити на повітряні колізії.

Наприклад, коли редагується MDN, поточний вікі контент захешований у Etag і доданий до відповіді:

ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

POST запит у вікі сторінках (додання даних/зміни) матиме If-Match заголовок із ETag кодом, для перевірки актуальності даних.

If-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"

Якщо хеш не сходиться, це означає що данні змінилися, документ був змінений нещодавно і 412 Precondition Failed буде повернено.

Кеш статичних ресурсів

Інший випадок використання ETag заголовку це кешування ресурсів які не змінювались. Якщо користувач робить запит якоїсь URL знову (вже встановлений ETag), і якщо контент є застарілим, він може буть непрацюючим. Користувач виконує запит з встановленим ETag із заголовком If-None-Match:

If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"

Сервер порівнює клієнтську версію коду ETag (відправлений з If-None-Match) з версією ETag для поточної версії ресурсу і якщо обидва сходяться то змін не було, сервер поверне відповідь 304 Not Modified, без тіла відповіді, то поточна версія є актуальна(fresh).

Стандарти

Specification Title
RFC 7232, section 2.3: ETag Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

Сумісність с оглядачами

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic supportChrome Full support YesEdge Full support YesFirefox Full support YesIE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes

Legend

Full support  
Full support

See also

Мітки документа й учасники

Зробили внесок у цю сторінку: cloudgnome
Востаннє оновлена: cloudgnome,