Я прочитал несколько статей о настройке длины содержимого файла, который будет обслуживаться. Он имеет некоторые преимущества по сравнению с фрагментированными загрузками. Сервер обслуживает фрагменты (в любом случае не знаю, каков размер фрагмента), когда длина содержимого неизвестна.
В PHP я использую ob_gzhandler для сжатия файлов html, js и css и другого текстового содержимого. Установка необработанного content-length перед выводом gzip приводит к странным побочным эффектам, поскольку длина не соответствует длине вывода gzip. Я замечаю задержку или браузер сообщает об ошибке кодирования.
Я видел трюк (также в stackoverflow), чтобы установить длину содержимого после сжатия gzip, чтобы убедиться, что он сообщает правильный размер. Но когда я это делаю, контент больше не сжимается.
Вопрос в том, правильно ли это поведение? Всегда ли сжатое содержимое отправляется фрагментами? Требуется ли длина содержимого только для файлов, которые не сжаты с помощью gzip?
Вот несколько фрагментов кода:
1 Результатов передачи файлов в формате gzip и фрагментов:
ob_start('ob_gzhandler');
echo $sResult;
2 Приводит к нормальной передаче файла с указанной длиной содержимого (но с сохранением gzip и длины содержимого):
ob_start('ob_gzhandler');
echo $sResult;
header('Content-Length: '.ob_get_length());
Вот несколько изображений результатов заголовка http: 1
2
ob_end_flush()
он сбрасывает внутреннюю буферизацию вывода, принадлежащуюob_gzhandler
; тогда длина содержимого известна ... после этого второй вызов очищает внешний буфер. - person Ja͢ck   schedule 03.12.2013