У меня точно такая же проблема, о которой сообщалось в https://github.com/GoogleChrome/workbox/issues/1663, которая описывает проблему, возникающую исключительно в Safari, где видео mp4 не воспроизводятся после кэширования работником сервиса.
I 'м, используя workbox-webpack-plugin
, поэтому инструкции, приведенные в комментарии https://github.com/GoogleChrome/workbox/issues/1663#issuecomment-448755945, не будут работать в моем случае.Я не могу требовать плагин workbox-range-requests
в своем конфигурационном файле веб-пакета и передавать его в параметры кэширования во время выполнения, потому что я считаю, что этот пакет предназначен только для использования браузером.Моя рабочая конфигурация предварительно кэширует активы .mp4 и использует первую сетевую стратегию для кэширования во время выполнения.
Как настроить workbox-range-requests
с помощью workbox-webpack-plugin
?
РЕДАКТИРОВАТЬ: следуя ответ Джеффаниже , я настроил свою конфигурацию webpack следующим образом:
new WorkboxPlugin.InjectManifest({
swSrc: serviceWorkerSrcPath,
swDest: serviceWorkerBuildPath,
importsDirectory: 'sw',
})
Сборка производит следующий сервисный работник:
importScripts("/_build/sw/precache-manifest.8a0be820b796b153c97ba206d9753bdb.js", "https://storage.googleapis.com/workbox-cdn/releases/3.6.2/workbox-sw.js");
workbox.precaching.precacheAndRoute(self.__precacheManifest || []);
workbox.routing.registerRoute(
/.*\.mp4/,
new workbox.strategies.CacheFirst({
cacheName: 'videos',
plugins: [
new workbox.cacheableResponse.Plugin({ statuses: [200] }),
new workbox.rangeRequests.Plugin(),
],
}),
);
Если я забыл упомянуть ранее, но яТакже добавлен атрибут crossOrigin="anonymous"
к элементам video
.