Когда я использую Firefox для доступа к одному из моих сайтов с большим количеством файлов CSS, периодически загружаются не все файлы CSS.
Заглянув в панель управления разработчика в Firefox (F12), я вижу, что, когда возникает проблема, файлы имеют статус = 0, почти как запрос никогда не отправлялся на сервер, но, глядя на сервер, запрос уже есть.
Я попытался максимально упростить проблему, и мне удалось уменьшить ее до html-файла, который получает 100 файлов CSS и некоторый javascript, который автоматически обнаруживает, когда возникает проблема.
Это сделано для того, чтобы людям было легче тестировать их собственные установки, и чтобы попытаться доказать, что я не просто сумасшедший.
Параметры теста:
Свежий debian 9 на GCP (также тестировался на CentOS)
nginx 1.10.3 (но это также происходит в последних стабильных и основных версиях)
HTTPS / SSL включен (протестировано с использованием самозаверяющего, шифрования и коммерческого SSL)
HTTP2 включен
Firefox 66 (также тестировался с Firefox 65)
Теперь, когда я получаю доступ к своему тесту HTML, javascript перезагружает страницу до тех пор, пока не произойдет ошибка, а затем отобразит предупреждение. Это может занять от нескольких секунд до пяти минут, обычно это происходит в течение первой минуты.
Firefox загрузит несколько первых файлов CSS, а затем либо пропустит остальные, либо пропустит 20-30-40 файлов, а затем попытается снова, пропущенные файлы будут иметь статус 0. Журнал доступа nginx сообщит, что он ответил либо статусом 200, либо 304 , но firefox никогда не отобразит эту информацию
Тестовый пакет html / css можно скачать здесь: тестовый пакет html
Я не на 100% уверен, кто / что здесь виноват
Это легко мог быть я, но в этом случае никто не сможет воспроизвести мои результаты, а несколько человек уже
Это может быть Firefox, nginx или их комбинация.
Любая помощь будет принята с благодарностью, я бился головой о стену в течение последних двух дней
Правка / уточнение:
Я понимаю, что никогда не должен / никогда "заставлять" пользователя загружать 100 файлов CSS на рабочий сервер :)
100 было просто числом, при котором результаты было очень легко и быстро воспроизвести, поэтому я выбрал 100 для тестового пакета, чтобы вам, ребята, было легче / быстрее воспроизвести проблему самостоятельно.
Из-за отсутствия ответов и небольшого сбоя (надеюсь, без обид, Майкла Хэмптона :)), я сообщил об ошибке команде Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1538978
Ошибка оказалась дубликатом некоторых других ошибок, все это можно увидеть на bugzilla.
Но вкратце, nginx отправляет «отказ», когда достигает своего лимита http2_max_requests.
Firefox не справляется с этим так хорошо, что создает некоторые проблемы.
Chrome справляется с этим немного лучше, кажется, он немного подождет, а затем повторите попытку
Кто виноват, я точно не знаю, но способ значительно уменьшить проблему - установить http2_max_requests на очень большое число, скажем, 500.000, по умолчанию - 1000
http2_max_requests 500000;
Я так бегаю уже несколько недель, без проблем. Итак .. Проблема "решена"