Firefox прекращает загрузку долгого запроса, и первая реакция — увеличить timeout. Цена ошибки — браузер дольше держит пользователя на сломанном соединении, а серверная причина остаётся без диагностики.
В исходной инструкции полезно само указание на `about:config`. Редактура добавляет порядок: сначала DevTools и другой клиент, затем проверка прокси и сервера, и только потом временная настройка с понятным сроком возврата.
Что сохраняем из исходной заметки
При выполнении каких-либо ресурсоёмких операций на интернет ресурсах, когда время отклика может переваливать за минуты, а то и больше, браузеры прерывают соединение и сообщают, что сервер не доступен.
К таким операция, например, можно отнести выгрузку дампа базы данных в phpmyadmin, парсинг больших файлов и прочее.
Максимальное время ожидания (timeout) в браузерах по умолчанию обычно настроено на несколько минут. В браузере Firefox, если я не ошибаюсь, это значение равно 5 минут.
Нам, конечно, прерывать соединение не хочется, т.к. проводимая операция может прерваться, и, следовательно, возникнуть дальнейшие проблемы из-за неправильного выполнения операции.
Благо данную настройку в Firefox можно изменить. Для этого:
- Открываем новую вкладку
- В адресной строку пишем «about:config» и нажимаем Enter
- Соглашаемся с сообщением о риске
- В поле поиска вводим параметр «network.http.response.timeout»
- Двойным нажатием открываем окно настройки данного параметра
- Вводим необходимое время в секундах, например, 1800 (пол часа)
- Нажимаем ОК и закрываем вкладку.
P.S. Иногда данная опция оказывается даже очень полезной. В небезызвестном браузере Chrome данный параметр для настройки отсутствует.
Когда лучше не увеличивать timeout
Увеличение ожидания помогает при разовых административных операциях, но не должно маскировать медленный сайт. Если обычная страница требует минуты, правильнее вынести задачу в фон: очередь, cron, прогресс-бар и отдельная проверка статуса.
Важно не путать разные таймауты. Ожидание HTTP-ответа — это одно, долго выполняющийся JavaScript на странице — другое, а таймауты прокси или веб-сервера — третье. Если Firefox ждёт дольше, но nginx, Apache, PHP-FPM или upstream уже оборвал соединение, настройка браузера не поможет.
- Для долгого ответа сервера проверяйте HTTP timeout в браузере и серверные таймауты.
- Для долгого JavaScript смотрите предупреждения о зависшем скрипте и настройки выполнения JS.
- Для импорта больших файлов лучше использовать фоновую задачу и страницу прогресса.
- Для phpMyAdmin и разовых административных операций увеличение ожидания допустимо.
Если параметра в about:config нет, его можно создать вручную только тогда, когда вы понимаете, какая версия Firefox и какой именно timeout вам нужен. После завершения работы лучше вернуть настройку к обычному значению, чтобы браузер не висел слишком долго на реально недоступных сайтах.
Итог: увеличивать timeout можно как временный инструмент администратора. Для пользовательского сценария правильнее исправлять серверную часть, потому что долгий белый экран остаётся плохим интерфейсом даже тогда, когда браузер согласен ждать.
Механизм без лишних обещаний
Таймаут браузера — один из нескольких пределов. Запрос могут завершить сервер, reverse proxy, балансировщик или сеть. Если изменить только Firefox, он не продлит соединение, которое уже закрывает другой слой.
В Network-панели нужно посмотреть, на каком этапе проходит время: DNS, соединение, ожидание первого байта или загрузка тела. Длинный TTFB указывает на серверную работу; обрыв соединения — на другой класс причины.
Параметр в `about:config` действует локально и может меняться между версиями. Это диагностическая мера, а не настройка приложения для всех пользователей.
Минимальный воспроизводимый пример
Ниже — маленькая проверка, которую можно запустить или адаптировать в отдельном тестовом окружении. Значения демонстрационные; проектные идентификаторы, пути и версии нужно заменить своими и сохранить рядом с результатом.
# 1. Проверить тот же URL без браузерного UI.
curl -v --max-time 60 https://example.test/report
# 2. В Firefox открыть about:config и найти параметр
# network.http.response.timeout
# Сохранить старое значение и менять его только в профиле диагностики.
# 3. После исправления вернуть параметр и повторить Network trace.
Матрица диагностики
| Наблюдение | Где искать причину | Следующий шаг |
|---|---|---|
| Нет ответа до первого байта | Приложение, БД, внешний API | Снять серверный trace и время этапов |
| Соединение закрыто прокси | Reverse proxy или балансировщик | Сверить таймауты всех уровней |
| Только Firefox падает | Профиль, расширение, локальная настройка | Повторить в чистом профиле |
| curl и браузер одинаково медленны | Сервер или сеть | Не менять браузерный параметр первым |
Порядок действий
- Записать URL, время начала запроса и наблюдаемый этап в DevTools.
- Повторить запрос через `curl` с ограниченным таймаутом.
- Сравнить таймауты браузера, прокси, сервера и внешних зависимостей.
- Изменить параметр только в отдельном Firefox-профиле и сохранить старое значение.
- После исправления вернуть параметр и проверить, что причина устранена, а не замаскирована.
Ограничения и безопасный следующий шаг
Названия и смысл внутренних параметров Firefox могут меняться; сверяйте версию браузера.
Увеличенный timeout не делает операцию быстрее и не заменяет отмену запроса.
Не просите пользователя менять `about:config` как постоянное решение серверной проблемы.
После проверки должен остаться конкретный артефакт: вывод команды, тест, diff конфигурации или запись результата. Если его нет, формулировку нужно вернуть к симптому и не выдавать гипотезу за исправление.
Что записать в ревью
Короткая запись должна отвечать на четыре вопроса: какой вход использовали, какой результат увидели, какая граница была проверена и какое действие разрешено дальше. Такая форма полезнее длинного вывода «всё работает»: другой инженер сможет повторить проверку и понять, где заканчивается пример.
Если результат зависит от версии Windows, PHP, Bitrix, D или браузера, версию фиксируем рядом с командой. Если проверка не охватывает сеть, production или реальные пользовательские данные, это ограничение пишем прямо. Тогда следующий шаг расширяет evidence, а не расширяет обещание.
Проверяемые источники
- Mozilla Support: Firefox не загружает сайты — даёт порядок проверки соединения и расширений
- MDN: Network requests — объясняет поля сетевого запроса в DevTools
- Firefox source code — помогает сверить исторический параметр с версией