Я пытаюсь предварительно загрузить видео, используя эту технику из Google , используя <Link ref='preload'>
.
У меня есть простое приложение React здесь:
class App extends Component {
state = {
videoUrl: null,
};
componentDidMount = () => {
this.preloadVideo();
};
preloadVideo = () => {
const link = document.createElement('link');
const attributesAndValues = [{ key: 'rel', value: 'preload' }, { key: 'as', value: 'video' }];
attributesAndValues.forEach(item => {
link.setAttribute(item.key, item.value);
});
link.href = 'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_30mb.mp4';
document.body.appendChild(link);
};
render() {
return (
<div className="App">
<header className="App-header">
<video controls src={this.state.url} />
</header>
<button
onClick={() =>
this.setState({
url: 'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_30mb.mp4',
})
}
>
Set Video Url
</button>
</div>
);
}
}
Приложение монтируется, а preloadVideo()
срабатывает. И мое видео-образец загружается.
Однако, когда я нажимаю <button>
, чтобы добавить этот URL-адрес видео в src видео, заголовки отличаются:
Предварительная загрузка для 'https://www.sample -videos.com / video123 / mp4 / 720 / big_buck_bunny_720p_30mb.mp4 ' найдена, но не используется, поскольку заголовки запроса не совпадают.
Каждое красное поле представляет:
- Начальная предварительная нагрузка.
- Загрузка видео, когда
video src=""
установлен через состояние.
- Предупреждение об использовании предварительной нагрузки.
Начальные заголовки предварительной загрузки
Заголовки загрузки видео
Документация MDN
После прочтения MDN документации по предварительной загрузке контента . Там написано:
Предварительная загрузка
имеет и другие преимущества. Использование as для указания типа загружаемого контента позволяет браузеру:
- Более точное определение приоритетов загрузки ресурсов.
- Соответствует будущим запросам, используя тот же ресурс, если это необходимо.
- Применение правильной политики безопасности содержимого к ресурсу.
- Установите для него правильные заголовки запроса Accept.
Так почему же мои заголовки отличаются? Вы можете явно установить заголовки?
Вот Codesandbox