Делая глубокие вдохи , высунув голову из отладочной кроличьей норы.
Эта проблема имеет много решений.
Проблема:
Chrome считает, что каждый запрос диапазона запрашивает «один и тот же» ресурс, поскольку URL-адрес совпадает Технически это НЕ "тот же" ресурс, потому что запрашивается другой диапазон байтов, как указано в заголовке Content-Range
.
Вот цитата из chromium docs о том, как кеш http обрабатывает запросы с одинаковым URL.
Принудительная блокировка кеша.
В кеше реализована одна запись - блокировка нескольких читателей, так что
только один сетевой запрос на тот же ресурс находится в полете в любой
данное время.
Обратите внимание, что наличие блокировки кеша означает, что полоса пропускания не
впустую повторное извлечение одного и того же ресурса одновременно. С другой
стороны, он заставляет запросы ждать до завершения предыдущего запроса
загрузка ресурса ...
Если вы откроете вкладку «Синхронизация» в каждом сетевом запросе в моем примере, вы увидите, что каждый запрос ожидал завершения предыдущего запроса.
Решение:
Принудительно заставляет Chrome распознавать, что запросы диапазона возвращают разные ресурсы.
Это можно сделать, установив заголовок Cache-Control: no-cache, no-store
в запросе или ответе. Улучшение производительности было наивысшим при настройке по запросу. Другие значения заголовка, вероятно, будут работать, я только протестировал no-cache, no-store
. Это объясняет, почему проверка «Отключить кеш» сделала мои запросы намного быстрее, каждый запрос мог использовать другое TCP-соединение и не блокировался блокировкой кеша.
Я бы хотел поддержать этот ТАК за то, что дал мне "Ага!" момент, и к Firefox за отсутствие этой проблемы.