При выполнении запроса может быть установлен заголовок range
, который сообщает серверу возвращать только часть полного запроса. Это полезно для определенных файлов, например видеофайлов, где пользователь может изменить место воспроизведения видео.
Что делает этот модуль?
Могут быть сценарии, когда вы хотите использовать кэшированный файл, но браузер установил заголовок range
. Обычно заголовок игнорируется.
Этот модуль прочитает кэшированный ответ и вернет указанный диапазон данных.
Основное использование
Вы можете использовать запросы диапазона Workbox, добавив плагин к стратегии, по которой вы хотите проверять запросы диапазона.
import {registerRoute} from 'workbox-routing';
import {CacheFirst} from 'workbox-strategies';
import {RangeRequestsPlugin} from 'workbox-range-requests';
registerRoute(
({url}) => url.pathname.endsWith('.mp4'),
new CacheFirst({
plugins: [
new RangeRequestsPlugin(),
],
});
);
Расширенное использование
Если вы хотите использовать эту логику вне плагина, вы можете использовать функцию createPartialResponse()
.
import {createPartialResponse} from 'workbox-range-requests';
createPartialResponse(request, cachedResponse);
Для получения дополнительной информации см. справочную документацию .
Типы
RangeRequestsPlugin
Плагин запроса диапазона упрощает выполнение запроса с заголовком Range с помощью кэшированного ответа.
Это делается путем перехвата обратного вызова подключаемого модуля cachedResponseWillBeUsed
и возврата соответствующего подмножества кэшированного тела ответа.
Характеристики
- конструктор
пустота
Функция
constructor
выглядит так:() => {...}
- возвращает
Методы
createPartialResponse()
workbox-range-requests.createPartialResponse(
request: Request,
originalResponse: Response,
)
Учитывая объекты Request
и Response
в качестве входных данных, это вернет обещание для нового Response
.
Если исходный Response
уже содержит частичный контент (т. е. имеет статус 206), то это предполагает, что он уже соответствует требованиям Range:
и вернет его как есть.
Параметры
- запрос
Запрос
Запрос, который должен содержать заголовок Range:.
- оригинальныйОтвет
Ответ
Ответ.
Возврат
Обещание<Ответ>
Либо ответ
206 Partial Content
, в теле ответа которого установлен фрагмент содержимого, указанный в заголовкеRange:
запроса, либо ответ416 Range Not Satisfiable
если условия заголовкаRange:
не могут быть выполнены.