Скрипт php читает файл и выдает его с помощью echo.
Перед echo с помощью header отправляются следующие заголовки.
Date: $date_gmt
Expires: $expires_gmt
Last-Modified: $date_gmt
Далее, если запрошена часть файла, то отправляется
206 Partial content
Content-Range: bytes $startpos-$endpos/$fsize
Content-Length: $partsize
Accept-Ranges: bytes
Content-Type: image/svg+xml
Cache-Control: max-age=86400, must-revalidate
иначе
200 OK
Content-Length: $fsize
Accept-Ranges: bytes
Content-Type: image/svg+xml
Cache-Control: max-age=86400, must-revalidate
Из-за mod_deflate сервер добавляет заголовки
Vary: Accept-Encoding
Content-Encoding: gzip
Transfer-Encoding: chunked
При этом пропадает заголовок Content-Length.
Будет ли это работать корректно? Как проверить ответ при запросе части файла?
Как вообще работает протокол сжатия? Части исходного файла сжимаются, после чего клиент их распаковывает и дописывает до файла, либо же клиент запрашивает части целого архива, а потом уже распаковывает целый архив?
Может стоит выключить сжатие для image/svg+xml и как-то сжимать файл с помощью php перед отправкой?