Код состояния HTTP 304 — это стандартный код состояния ответа HTTP, который указывает, что запрошенный ресурс не был изменен с момента последнего доступа к нему. Его обычно называют «Немодифицированным». Когда веб-сервер возвращает код состояния 304, он по сути сообщает клиенту, что запрошенный контент не изменился, и нет необходимости повторно передавать весь ответ.
Вот несколько методов, связанных с кодом состояния HTTP 304:
-
Условный GET: когда клиент отправляет запрос GET на сервер, он включает заголовок If-Modified-Since с отметкой времени ранее кэшированной версии. Если сервер определяет, что ресурс не изменялся с момента этой временной метки, он отвечает кодом состояния 304.
-
ETag: ETag (тег объекта) — это заголовок ответа HTTP, который предоставляет уникальный идентификатор для конкретной версии ресурса. Когда клиент отправляет запрос GET, он включает значение ETag в заголовок If-None-Match. Если сервер обнаруживает, что ETag соответствует текущей версии ресурса, он возвращает код состояния 304.
-
Cache-Control: заголовок Cache-Control позволяет серверу указывать директивы кэширования для клиента. Установив директиву «must-revalidate», сервер может поручить клиенту повторно проверить ресурс, отправив условный запрос GET и получив ответ 304, если ресурс не изменился.
-
Заголовок Expires. Заголовок Expires указывает дату и время, после которых ресурс следует считать устаревшим. Если клиент отправляет запрос GET для ресурса и обнаруживает, что значение заголовка Expires не было передано, он может обслуживать ресурс из своего кэша, не обращаясь к серверу. Однако после прохождения значения Expires клиенту необходимо отправить условный запрос GET для повторной проверки ресурса.
-
Конфигурация на стороне сервера: веб-серверы можно настроить на автоматическую отправку кода состояния 304 для определенных типов ресурсов. Эта конфигурация может основываться на различных факторах, таких как временные метки файлов или определенные правила, определенные администратором сервера.