Новейшая версия Safari (мобильная и десктопная) буферизует видео в 4 раза медленнее, чем другие браузеры, потому что она отправляет множество небольших запросов в байтах диапазона, а не нескольких больших. Пример запроса и ответа ниже (этот запрос продолжается с небольшим размером 64 КБ до тех пор, пока не будет загружено достаточно данных для воспроизведения видео, в Chrome, Firefox и других браузерах запрос диапазона байтов намного больше, и поэтому данные доставляются намного быстрее в одном потоке).
Можно ли обойти эту проблему, заставив мой веб-сервер (apache) игнорировать запрос Safari небольшого байта диапазона размером 64 КБ и вместо этого отправлять больший объем данных (около 5 МБ)? Запрос делается прямо в видео файл.
Summary
URL: http://example.org/video.mp4?rand=942824
Status: 206 Partial Content
Source: Network
Request
GET /video.mp4 HTTP/1.1
Accept: */*
Connection: keep-alive
Range: bytes=0-65535
Accept-Encoding: identity
Response
HTTP/1.1 206 Partial Content
Content-Type: video/mp4
Content-Range: bytes 0-65535/467342440
Accept-Ranges: 0-467342440
Content-Length: 65536
Connection: keep-alive
Server: nginx/1.2.1
ОБНОВЛЕНИЕ: мне удалось изменить заголовок диапазона запроса, используя приведенный ниже код, однако, хотя 5 МБ загружаются быстро, safari продолжает отправлять эти небольшие запросы диапазона 64 КБ и игнорирует 5 МБ, которые были загружены, поэтому это не решение.
SetEnvIf Range bytes=0-65535 HAVE_MyRequestHeader
RequestHeader unset Range env=HAVE_MyRequestHeader
RequestHeader set Range bytes=0-5000000 env=HAVE_MyRequestHeader

Нет. Вы не можете изменить его на стороне сервера. Клиент делает запрос, сервер выполняет запрос. Отправка данных, которые клиент не запрашивал, скорее всего, вызовет ошибки.