Что такое 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 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, когда контент остается неизменным.
Чтобы это работало, в панели управления нужно правильно настроить кэширование. Есть два основных параметра:
-
Caching Level (обозначен на скриншоте «1»). Он определяет, как именно происходит хранение файлов:
-
no query string — фиксирует страницу независимо от параметров в URL;
-
ignore query string — сохраняет в кэше только одну версию файла, даже когда в URL разные параметры, но при этом передает эти параметры на сервер (например, file.js?v=1 и file.js?v=2 воспринимаются как один ресурс);
-
standard — отдельно сохраняет каждый уникальный URL с параметрами.
-
Browser Cache TTL (время хранения в кеше, на скриншоте обозначено «2») определяет, как долго файлы будут оставаться в локальном хранилище программы для просмотра. В течение этого периода клиентский агент не обращается к серверу, а берет готовую копию из памяти.
Например, если TTL установлен на один месяц, изображения, стили или скрипты будут открываться мгновенно при каждом повторном посещении. Это существенно сокращает время загрузки страниц и уменьшает нагрузку на сервер.
В результате правильной конфигурации Cloudflare в сочетании с кешем пользователя данные хранятся максимально эффективно, а страницы отдаются через HTTP 304. Это значительно ускоряет работу сайта.
Совместимость и поведение браузеров с 304 Not Modified
Код HTTP 304 поддерживают все современные браузеры: Chrome, Firefox, Safari, Edge. Когда сервер возвращает этот код, клиентская программа автоматически берет ресурс из локального хранилища и не загружает его повторно. Для пользователя процесс происходит незаметно.
Важный нюанс: каждый браузер может сам определять, сколько времени хранить кэшированные файлы.
Если хранилище повреждено или очищено, браузер все равно обратится за новой копией, даже если ответ — 304. Старые версии браузеров могут работать иначе, но в большинстве случаев поддержка этого кода полная и стабильная.
Также читайте в нашем блоге, Что такое код ошибки 410.
Преимущества использования 304 Not Modified
Когда сервер возвращает статус 304, это означает, что файл не изменился и его можно загрузить из кэша. Благодаря этому страница открывается быстрее, ведь браузеру не нужно каждый раз загружать данные с нуля.
Что это дает на практике:
-
страницы открываются быстрее, потому что программе для просмотра не нужно каждый раз загружать данные с нуля;
-
сервер получает меньше запросов и работает стабильнее под нагрузкой;
-
экономится трафик, что особенно важно для пользователей с мобильными тарифами;
-
работа с сайтом становится более комфортной, а это напрямую влияет на лояльность посетителей.
Если в логах появляется статус 304 — это вовсе не ошибка, а нормальный сигнал от сервера.
Хотите, чтобы ваш сайт загружался еще быстрее и лучше ранжировался в Google?
Заказывайте SEO-аудит и оптимизацию — мы не только настроим кэширование и статусы 304, но и повысим скорость, юзабилити и позиции в выдаче.
Выводы
-
304 — это HTTP-статус, который означает, что файл не изменялся. В таком случае браузер сам решает, загрузить его из локального кэша или запросить заново. Благодаря этому страницы открываются быстрее, а нагрузка на инфраструктуру снижается.
-
Чтобы код 304 работал корректно, нужно правильно настроить сервер. В Nginx это делается через etag и if_modified_since, в Apache — с помощью директив в .htaccess, а в Cloudflare — через параметры кэширования.
-
Поддержка 304-статуса есть во всех современных браузерах, поэтому его можно использовать для сайтов. Для пользователей это означает удобство и экономию трафика, а для владельцев площадок — оптимизацию серверных ресурсов.
-
Использование кода 304 Not Modified — это баланс между скоростью работы сайта и надежностью технической платформы.
FAQ
-
Можно ли считать 304 ошибкой?
Нет, это нормальное поведение сервера. Код означает, что файл не изменился, и система отображает его из кэша. -
Влияет ли 304 на SEO?
Прямого влияния нет. Использование кэша ускоряет сайт, а это учитывается поисковыми системами как положительный сигнал. -
Всегда ли браузер получит 304?
Нет. Если кэш удален, ресурс изменен или отключены заголовки If-Modified-Since/ETag, файл загружается заново. -
Что делать, когда страницы не кэшируются?
Проверить конфигурацию заголовков Cache-Control, ETag и Last-Modified. Без них сервер не сможет вернуть 304. -
Экономит ли 304 мобильный трафик?
Да. Поскольку данные берутся из локальной копии, повторная загрузка не требуется, и расходы трафика снижаются.
Свежее
Как настроить ретаргетинг для рекламы в Instagram и Facebook
Понятная инструкция для SMM-специалистов и тех, кто экспериментирует с настройками аудиторий в рекламных кампаниях
Как подобрать низкочастотные запросы и для чего это нужно
Низкочастотные, низкоконкурентные, Long Tail и другие термины, которые нужно знать и понимать.
AI-поиск и ecommerce: как меняется SEO-оптимизация
В статье разбираю, как меняется поведение покупателей и какие практические шаги нужно сделать уже сегодня, чтобы адаптировать ваш бизнес к новой реальности

