Кеширование с HTTP Etag в nginx

Thank you for reading this post, don't forget to subscribe!

Etag (или entity tag) — один из меха­низ­мов кэши­ро­ва­ния в HTTP. По сути это иден­ти­фи­ка­тор, кото­рый при­сва­и­ва­ет­ся фай­лу сер­ве­ром для после­ду­ю­щей проверки.

Когда кли­ент запра­ши­ва­ет фай­лы веб-стра­ни­цы (кар­тин­ки, CSS и т.д), сер­вер пере­да­ет все дан­ные вме­сте с тэга­ми Etag в виде:

# При­мер отве­та сер­ве­ра с Etag

Фай­лы сохра­ня­ют­ся в кэше на сто­роне кли­ен­та, и когда бра­у­зер запра­ши­ва­ет эти фай­лы сно­ва, то к запро­су добав­ля­ет­ся стро­ка If-None-Match:

# При­мер запро­са с Etag

Сер­вер, в свою оче­редь, про­ве­ря­ет Etag, если он сов­па­да­ет, то в ответ сер­вер отправ­ля­ет код 304:

# Ука­зы­ва­ет, что фай­лы не изме­ни­лись и их мож­но взять с кэша

Ина­че тре­бу­е­мые фай­лы будут зано­во отправлены.

Включение Etag

Все совре­мен­ные веб-бра­у­зе­ры и веб-сер­ве­ры под­дер­жи­ва­ют HTTP Etag. Для вклю­че­ния функ­ции в Nginx нуж­но отре­дак­ти­ро­вать его файл конфигурации:

[codesyntax lang="php"]

[/codesyntax]

# Etag вклю­ча­ет­ся для ста­ти­че­ских файлов

Самое главное

HTTP Etag поз­во­ля­ет уве­ли­чить отзыв­чи­вость веб-при­ло­же­ния и умень­шить нагруз­ку на канал. Функ­ция под­дер­жи­ва­ет­ся все­ми совре­мен­ны­ми веб-бра­у­зе­ра­ми и не тре­бу­ет допол­ни­тель­ной настрой­ки после включения.