ERR_CACHE_MISS Chrome показывает, когда вы нажимаете «Назад» и возвращаетесь на страницу, которая открылась после отправки формы, а сайт запретил браузеру её сохранять. Вместо страницы — заголовок «Подтвердите повторную отправку формы» и код ошибки внизу. Мы собрали стенд с формой и разными заголовками кэша, проверили в Chromium 149, когда появляется ошибка и что будет, если нажать «Обновить», и посчитали, у скольких сайтов Екатеринбурга она возможна.
Проверить, отвечает ли сайт вообще и с каким кодом, можно нашим сервисом проверки доступности.
Что такое ERR_CACHE_MISS
Кэш браузера — место, где Chrome хранит страницы, картинки и стили, чтобы не скачивать их заново. При ERR_CACHE_MISS браузер пошёл за страницей в кэш и не нашёл её. В исходниках Chromium, в файле net_error_list.h, у ошибки номер -400 и описание «The cache does not have the requested entry» — в кэше нет запрошенной записи.
Обычный сайт эту ошибку не вызывает: если страницы в кэше нет, браузер просто запросит её у сервера. Но есть случай, когда запросить нельзя, — страница была ответом на отправленную форму. Чтобы получить её заново, нужно повторить отправку: ещё раз создать заказ, ещё раз записаться, ещё раз заплатить. Без вашего согласия Chrome этого не делает и показывает ошибку.
Как выглядит ошибка
На русском Chrome пишет:
Подтвердите повторную отправку формы. Для корректного отображения веб-страницы требуются введенные ранее данные. Их можно отправить повторно, но в этом случае все действия на странице будут выполнены снова. Чтобы повторно ввести данные, необходимые для загрузки страницы, нажмите «Обновить».
Под текстом — код ERR_CACHE_MISS. Адрес в строке остаётся адресом страницы с результатом формы. Сообщение является частью Chrome, а не сайта: его можно увидеть на любом сайте, где есть формы. Наиболее часто оно появляется после поиска, входа в кабинет и оформления заказа.
Стенд: когда «Назад» даёт ошибку
Мы написали сервер с формой. Форма отправляет имя методом POST, сервер отвечает страницей «Принято» с разными заголовками. Со страницы результата переходим по ссылке дальше и жмём «Назад».
| Ответ на форму | «Назад» | Повторная отправка на сервер |
|---|---|---|
| Без заголовка Cache-Control | страница из истории | нет |
| Cache-Control: no-cache | страница из истории | нет |
| Cache-Control: max-age=600 | страница из истории | нет |
| Cache-Control: no-store | ERR_CACHE_MISS | нет |
| Перенаправление 303 на обычную страницу | страница без ошибки | нет |
| Форма методом GET, ответ с no-store | страница без ошибки, запрошена заново | — |
Что из этого следует.
Ошибку даёт именно no-store. no-cache не мешает: браузер сохраняет такую страницу и показывает из истории. Стандарт кэширования HTTP, RFC 9111, прямо разрешает истории браузера показывать прежнюю версию страницы и разрешает учитывать no-store. Chrome его учитывает.
Форма методом GET ошибку не даёт. Данные GET-формы лежат в адресе, и браузер спокойно запрашивает страницу заново.
Кэш вперёд-назад не помогает. Мы повторили опыт с включённым механизмом, который хранит целые страницы для кнопки «Назад»: ошибка та же.
«Обновить» отправляет форму второй раз. Мы обновили страницу ошибки, и сервер получил второй POST с тем же именем. Для заявки это дубль, для заказа — второй заказ.
Откуда берётся no-store: PHP-сессии
На стенде PHP 8.3 с Apache мы сделали ту же форму. Пока скрипт не открывал сессию, «Назад» работал. Как только в скрипте появился session_start(), «Назад» дал ERR_CACHE_MISS.
Причина — настройка session.cache_limiter. По умолчанию она равна nocache, и документация PHP прямо пишет, какие заголовки при этом отправляются: «Cache-Control: no-store, no-cache, must-revalidate». Ни разработчик, ни владелец сайта их не ставили — их добавил PHP, как только сайт начал запоминать посетителя.
Наш замер: у скольких сайтов ошибка возможна
17.10.2026 мы запросили главные страницы 2056 сайтов организаций Екатеринбурга с заголовком браузера Chrome. Ответили 1506. Заголовок Cache-Control с no-store прислали 438 сайтов — 29 %.
-
Cookie сессии PHP (PHPSESSID) ставят 324 сайта, и у 290 из них на главной no-store. Это и есть заголовки сессии PHP по умолчанию.
-
Самое частое значение — «no-store, no-cache, must-revalidate»: 261 сайт; ещё 93 добавляют к нему «post-check=0, pre-check=0».
-
Форма с методом POST прямо в коде главной страницы есть у 677 сайтов; у 195 из них главная отдаёт no-store.
Формы мы не отправляли, поэтому не знаем, с какими заголовками сайты отвечают на саму отправку. Но если сайт ставит no-store на главной и работает на сессиях PHP, ответ на форму почти наверняка будет таким же: сессия ставит эти заголовки на каждую страницу.
Почему возникает ошибка
Основные причины:
- Возврат на результат формы. Вы отправили форму — заказ, вход, поиск, заявку — перешли дальше и нажали «Назад».
- Сайт запретил хранить страницу. Заголовок no-store ставит разработчик, CMS или PHP-сессия.
- Нет перенаправления после отправки. Если сайт после формы перенаправляет на обычную страницу, возвращаться некуда, кроме неё, и ошибки нет.
Как исправить ошибку посетителю
Не обновлять, если отправляли заказ или оплату
Процесс оплаты или оформления заказа требует особой осторожности.
Первое желание — нажать «Обновить». Браузер в этом случае отправит форму ещё раз с теми же данными. Если это был поиск или фильтр в каталоге, ничего страшного. Если заказ, заявка или платёж — вы рискуете сделать их дважды.
Открыть нужную страницу заново
Вместо возврата введите адрес раздела или перейдите по ссылке из меню сайта. Предыдущие страницы вы можете открыть заново и так: история браузера (Ctrl+H) хранит адреса, даже если сами страницы сохранены не были. Заказ, если он прошёл, будет в личном кабинете или в письме с подтверждением.
Обновить, если повтор безопасен
Если форма — поиск, вход или фильтр, нажмите «Обновить» и подтвердите повторную отправку. Страница откроется. Дополнительную проверку здесь делать не нужно: повтор поиска ничего не меняет на сайте.
Чего делать не нужно
Советы очистить кэш, сбросить сеть, переустановить Chrome или поменять DNS к этой ошибке не относятся. Страницы в кэше не было по просьбе сайта: очистка ничего туда не добавит. Сеть ни при чём: браузер даже не обращался к серверу.
Если ошибка появляется без формы
Некоторые известные советы против этой ошибки, которые можно встретить в интернете, — очистить кэш, сбросить сеть, переустановить программы — придуманы для других ситуаций. Если ошибка вызвана возвратом на форму, они не помогут. Иногда пользователи сталкиваются с ERR_CACHE_MISS на страницах, где ничего не отправляли. Такие случаи мы на стенде не воспроизвели, поэтому ниже — порядок проверки, а не готовый ответ. Следующие шаги идут от простых к сложным; после каждого откройте страницу заново и, если помогло, дальше не продолжайте.
- Перезагрузите страницу. Нажмите Ctrl+F5 — браузер загрузит страницу с сервером, не используя сохранённые файлы. Если ошибка была разовой, на этом всё.
- Откройте сайт в режиме просмотра инкогнито. Нажмите Ctrl+Shift+N или щёлкните правой кнопкой мыши по ссылке и выберите «Открыть ссылку в окне в режиме инкогнито». В этом окне по умолчанию отключены расширения и нет ваших cookie. Открылось — причина в расширениях или сохранённых данных.
- Проверьте расширения. В меню Chrome выберите «Расширения» → «Управление расширениями» и выключайте их по одному: блокировщики рекламы, VPN, расширения, которые меняют страницы или работают с cookie.
- Удалите данные одного сайта. Нажмите на значок слева от адреса → «Настройки сайтов» → «Удалить данные». Так вы не потеряете сохранённые пароли, закладки и вход на всех остальных сайтах, как при полной очистке. Если файлы кэша этого сайта оказались повреждёнными, это их удалит, и браузер загрузит страницу с её текущим содержанием.
- Обновите Chrome. Нажмите на три точки в правом верхнем углу и откройте «Справка» → «О браузере Google Chrome»: браузер проверит наличие обновлений и установит последнюю версию автоматически. Затем перезапустите его, чтобы завершить работу старой версии. Устаревшая версия может нормально работать с большинством сайтов, но свежая исключает ошибки, которые уже исправлены.
- Попробуйте другой браузер или устройство. Если на телефоне или в другом браузере страница загружается, проблема связана с вашим компьютером, а не с сервером сайта.
Сброс сетевых настроек и смена DNS-серверов в вашем случае обычно не помогут решить проблему: ERR_CACHE_MISS возникает внутри браузера, до соединения с сервером. Их стоит пробовать, только если вместе с ней появляются ошибки соединения с интернетом и проблемы с подключением к сети, например при попытке открыть и другие сайты. Если ничего не помогло, обратитесь за помощью к владельцу сайта: сообщите адрес страницы, время ошибки и версию браузера — это поможет ему найти причину.
Как исправить владельцу сайта
Post/Redirect/Get
Главное средство. После обработки формы сервер отвечает не страницей, а перенаправлением 303 на обычный адрес — например, на «Заявка принята». Браузер открывает её методом GET. На стенде после такой схемы кнопка «Назад» работала без ошибки, а обновление страницы запрашивало её заново и не отправляло форму второй раз.
// после сохранения заявки
header('Location: /zayavka-prinyata/', true, 303);
exit;
Не ставить no-store там, где он не нужен
no-store нужен страницам с личными данными: кабинет, корзина, оформление заказа. Странице «Спасибо, заявка принята» он не нужен. Если заголовок ставит PHP-сессия, а сессия на странице не нужна, не открывайте её: это особенно важно для страниц, которые видит каждый посетитель, и не мешает работе кабинета и корзины. Если нужна — session_cache_limiter() позволяет выбрать другие заголовки до session_start().
Отправлять формы без перехода
Форма, которую скрипт отправляет запросом fetch и показывает результат на той же странице, не создаёт в истории запись с POST. Возвращаться кнопкой «Назад» на ответ формы не придётся.
Защита от дублей
Какой бы схемой ни была построена форма, пользователи могут нажать кнопку дважды или вернуться и отправить её снова через определённое время. Сервер должен узнавать повторную отправку: по номеру формы, по одноразовому токену, по совпадению данных за последние минуты.
Инструменты разработчика
Во вкладке «Сеть» инструментов разработчика (F12) видно, какие заголовки получила каждая страница. Найдите запрос с методом POST и посмотрите Cache-Control в ответе: no-store там и вызывает ошибку при возврате. Например, если вы видите «no-store, no-cache, must-revalidate» и cookie PHPSESSID, заголовок поставила сессия PHP.
Как проверить, что ошибка устранена
- Откройте форму, отправьте тестовые данные.
- На странице результата перейдите по любой ссылке.
- Нажмите «Назад».
Убедитесь, что страница открылась: тогда ошибки нет. Затем на странице результата нажмите «Обновить»: если браузер спрашивает о повторной отправке, PRG не работает. Заголовки ответа видно во вкладке «Сеть» инструментов разработчика или командой:
curl -s -D - -o /dev/null -d imya=test https://example.ru/forma/
В ответе должен быть код 303 и заголовок Location.
Похожие ошибки
- ERR_FAILED — общая ошибка загрузки; на одном сайте её часто даёт сбойный service worker.
- ERR_UNKNOWN_URL_SCHEME — приложение на Android не открыло ссылку tel:, whatsapp:// или intent://.
- Ошибка 413 — форма с файлом не отправилась, потому что файл больше лимита сервера.
- Ошибка 400 — сервер не понял запрос: испорченный адрес или слишком большие cookie.
- Ошибка 304 — сервер сообщил, что копия в кэше браузера ещё свежая.
- ERR_EMPTY_RESPONSE — сервер закрыл соединение, ничего не прислав.
- ERR_CONNECTION_RESET — соединение сброшено на полпути.
Границы замера
Стенд — Chromium 149 на Linux. Мобильный Chrome, Android WebView и другие браузеры мы не проверяли. Обновление страницы мы делали через средства автоматизации, а не руками, поэтому не проверяли, как выглядит окно подтверждения. В обходе смотрели только главные страницы и не отправляли ни одной формы.
Коротко
ERR_CACHE_MISS — это не поломка, а отказ Chrome отправлять форму ещё раз без спроса. Посетителю: не обновлять страницу, если отправлял заказ или оплату, и открыть нужный раздел заново. Владельцу: отвечать на формы перенаправлением 303 и не ставить no-store на страницы результата. Почти у трети сайтов из нашего списка главная уже отдаёт no-store, чаще всего из-за сессий PHP.
