Мне пришлось столкнуться с подобной проблемой.
Оказывается, Safari iOS / Desktop по-прежнему не может извлекать видео из кэша при вызове того же URL-адреса через атрибут video src.
Обходной путь, который я нашел, состоял в том, чтобы использовать js fetch API для загрузки всего видео, а затем передать его в тег видео. Это может быть хорошим решением, если вы обслуживаете только небольшие видео, потому что с помощью этого метода вы не сможете начать воспроизведение видео, пока не будут загружены полные данные.
const videoRequest = fetch("/path/to/video.mp4")
.then(response => response.blob());
videoRequest.then(blob => {
video.src = window.URL.createObjectURL(blob);
});
В отличие от атрибута video src, API извлечения будет получать видеоданные из кэша, если такое же видео уже было извлечено ранее.
Вот демоверсия codepen , которую можно протестировать на настольном / мобильном устройстве Safari (если НЕ в частном режиме).
Я открыл похожую проблему здесь