SEO
1758522900

Что такое 304 Not Modified и почему это бонус для вашего сайта?

Сайт все еще «тормозит», хотя изображения уже оптимизированы, а код минимизирован? В логах постоянно появляется статус 304, и вы не уверены, является ли это ошибкой?

В этой статье я объясню, что на самом деле означает 304 Not Modified, почему это не сигнализирует о проблеме, а также как настроить сервер, чтобы ускорить работу ресурса и снизить нагрузку.

Как код статуса 304 ускоряет работу сайта

Когда пользователь впервые открывает страницу, браузер сохраняет статические файлы — изображения, CSS, JavaScript — в кэше. При следующем обращении сервер проверяет, изменился ли ресурс. Если нет, возвращается статус 304, а клиентская программа подтягивает данные из локальной памяти. Это сокращает время отклика и делает сайт быстрее.

Представьте логотип в формате .png. При первой загрузке браузер получает файл и фиксирует дату запроса. Когда пользователь возвращается на страницу, программа отправляет на сервер уточнение: изменялся ли логотип после указанной даты. Если файл остался прежним, ответ приходит в виде статуса 304, и изображение воспроизводится из кэша. В результате оно отображается мгновенно, без повторной загрузки.

По такой же логике работают не только картинки, но и стили, скрипты или даже HTML-страницы.

Чтобы проверить изменения, клиентский агент использует HTTP-заголовки If-Modified-Since (дата последнего сохранения файла) или If-None-Match (идентификатор версии ресурса). Именно благодаря этим заголовкам сервер решает, отдавать новую копию или ограничиться кодом 304.

Принцип роботи відповіді 304 Not Modified

Принцип работы ответа 304 Not Modified

Как настроить 304 code в разных средах

Использование статуса 304 требует правильной конфигурации. Рассмотрим настройки в самых популярных средах: Nginx, Apache2 и Cloudflare.

Настройка 304 в Nginx

В файле nginx.conf можно активировать проверку изменений ресурса. Если файл не обновлялся, сервер отвечает 304 not modified. Пример конфигурации:

location / {

  etag on;

  if_modified_since exact;

  add_header Cache-Control "public, max-age=2592000";

}

Здесь включены заголовки ETag и Last-Modified. Благодаря им браузер получает сигнал, что файл можно брать из кэша.

Настройка 304 в Apache2

В сервере Apache2 механизм проверки изменений файлов настраивается через файл .htaccess. В нем можно прописать следующие директивы:

FileETag MTime Size

<IfModule mod_headers.c>

  Header set Cache-Control "max-age=2592000, public"

</IfModule>

Когда файл не изменялся, Apache отвечает кодом 304, а браузер загружает его из локальной памяти.

Использование 304 в Cloudflare

Cloudflare считается одним из самых удобных инструментов для улучшения скорости сайтов. Одно из его преимуществ — система кэширования, которая ускоряет загрузку страниц и помогает экономить трафик. Благодаря этому механизму Cloudflare автоматически может отдавать код 304, когда контент остается неизменным.

Чтобы это работало, в панели управления нужно правильно настроить кэширование. Есть два основных параметра:

  1. Caching Level (обозначен на скриншоте «1»). Он определяет, как именно происходит хранение файлов:

  • no query string — фиксирует страницу независимо от параметров в URL;

  • ignore query string — сохраняет в кэше только одну версию файла, даже когда в URL разные параметры, но при этом передает эти параметры на сервер (например, file.js?v=1 и file.js?v=2 воспринимаются как один ресурс);

  • standard — отдельно сохраняет каждый уникальный URL с параметрами.

  1. Browser Cache TTL (время хранения в кеше, на скриншоте обозначено «2») определяет, как долго файлы будут оставаться в локальном хранилище программы для просмотра. В течение этого периода клиентский агент не обращается к серверу, а берет готовую копию из памяти.

    Например, если TTL установлен на один месяц, изображения, стили или скрипты будут открываться мгновенно при каждом повторном посещении. Это существенно сокращает время загрузки страниц и уменьшает нагрузку на сервер. 

Налаштування кешування у Cloudflare

В результате правильной конфигурации Cloudflare в сочетании с кешем пользователя данные хранятся максимально эффективно, а страницы отдаются через HTTP 304. Это значительно ускоряет работу сайта.

Совместимость и поведение браузеров с 304 Not Modified

Код HTTP 304 поддерживают все современные браузеры: Chrome, Firefox, Safari, Edge. Когда сервер возвращает этот код, клиентская программа автоматически берет ресурс из локального хранилища и не загружает его повторно. Для пользователя процесс происходит незаметно.

Важный нюанс: каждый браузер может сам определять, сколько времени хранить кэшированные файлы.

Если хранилище повреждено или очищено, браузер все равно обратится за новой копией, даже если ответ — 304. Старые версии браузеров могут работать иначе, но в большинстве случаев поддержка этого кода полная и стабильная.

Также читайте в нашем блоге, Что такое код ошибки 410.

Преимущества использования 304 Not Modified

Когда сервер возвращает статус 304, это означает, что файл не изменился и его можно загрузить из кэша. Благодаря этому страница открывается быстрее, ведь браузеру не нужно каждый раз загружать данные с нуля.

Что это дает на практике:

  • страницы открываются быстрее, потому что программе для просмотра не нужно каждый раз загружать данные с нуля;

  • сервер получает меньше запросов и работает стабильнее под нагрузкой;

  • экономится трафик, что особенно важно для пользователей с мобильными тарифами;

  • работа с сайтом становится более комфортной, а это напрямую влияет на лояльность посетителей.

Если в логах появляется статус 304 — это вовсе не ошибка, а нормальный сигнал от сервера. 

Хотите, чтобы ваш сайт загружался еще быстрее и лучше ранжировался в Google?

Заказывайте SEO-аудит и оптимизацию — мы не только настроим кэширование и статусы 304, но и повысим скорость, юзабилити и позиции в выдаче.

Выводы

  1. 304 — это HTTP-статус, который означает, что файл не изменялся. В таком случае браузер сам решает, загрузить его из локального кэша или запросить заново. Благодаря этому страницы открываются быстрее, а нагрузка на инфраструктуру снижается.

  2. Чтобы код 304 работал корректно, нужно правильно настроить сервер. В Nginx это делается через etag и if_modified_since, в Apache — с помощью директив в .htaccess, а в Cloudflare — через параметры кэширования.

  3. Поддержка 304-статуса есть во всех современных браузерах, поэтому его можно использовать для сайтов. Для пользователей это означает удобство и экономию трафика, а для владельцев площадок — оптимизацию серверных ресурсов.

  4. Использование кода 304 Not Modified — это баланс между скоростью работы сайта и надежностью технической платформы.

FAQ

  1. Можно ли считать 304 ошибкой?
    Нет, это нормальное поведение сервера. Код означает, что файл не изменился, и система отображает его из кэша.

  2. Влияет ли 304 на SEO?
    Прямого влияния нет. Использование кэша ускоряет сайт, а это учитывается поисковыми системами как положительный сигнал.

  3. Всегда ли браузер получит 304?
    Нет. Если кэш удален, ресурс изменен или отключены заголовки If-Modified-Since/ETag, файл загружается заново.

  4. Что делать, когда страницы не кэшируются?
    Проверить конфигурацию заголовков Cache-Control, ETag и Last-Modified. Без них сервер не сможет вернуть 304.

  5. Экономит ли 304 мобильный трафик?
    Да. Поскольку данные берутся из локальной копии, повторная загрузка не требуется, и расходы трафика снижаются.

2
0
0
Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.