Podczas wysyłania żądania można ustawić nagłówek range
, który informuje,
serwer zwraca tylko część pełnego żądania. Jest to przydatne w przypadku niektórych plików, takich jak pliki wideo, w których przypadku użytkownik może zmienić miejsce odtwarzania filmu.
Do czego służy ten moduł?
W niektórych sytuacjach wyświetlanie pliku z pamięci podręcznej może Ci się przydać
ale przeglądarka ustawiła nagłówek range
. Zwykle nagłówek jest ignorowany.
Ten moduł odczytuje odpowiedź z pamięci podręcznej i zwróci określony zakres danych.
Podstawowe zastosowanie
Aby używać żądań zakresu Workbox, dodaj wtyczkę do którą chcesz sprawdzić pod kątem żądań dotyczących zakresu.
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(),
],
});
);
Zaawansowane
Jeśli chcesz używać tej logiki poza Wtyczką,
może używać funkcji createPartialResponse()
.
import {createPartialResponse} from 'workbox-range-requests';
createPartialResponse(request, cachedResponse);
Więcej informacji znajdziesz w dokumentacji referencyjnej.
Typy
RangeRequestsPlugin
Wtyczka żądania zakresu ułatwia spełnienie żądania z nagłówkiem „Range” za pomocą odpowiedzi z pamięci podręcznej.
Odbywa się to przez przechwytywanie wywołania zwrotnego wtyczki cachedResponseWillBeUsed
i zwraca odpowiedni podzbiór treści odpowiedzi w pamięci podręcznej.
Właściwości
-
konstruktor
nieważne
Funkcja
constructor
wygląda tak:() => {...}
-
returns
-
Metody
createPartialResponse()
workbox-range-requests.createPartialResponse(
request: Request,
originalResponse: Response,
)
Biorąc pod uwagę obiekty Request
i Response
jako dane wejściowe, funkcja ta zwróci
obiecują nowe Response
.
Jeśli oryginalny element Response
zawiera już częściową treść (czyli ma stan 206), zakładamy, że spełnia on już wymagania dotyczące elementu Range:
i zwróci go w postaci oryginalnej.
Parametry
-
żądanie
Żądanie
Żądanie, które powinno zawierać zakres: nagłówek.
-
originalResponse
Odpowiedź
Odpowiedź.
Zwroty
-
Obietnica<Response>
Odpowiedź
206 Partial Content
z treścią ustawioną na wycinek treści określony w nagłówkuRange:
lub odpowiedź416 Range Not Satisfiable
, jeśli warunki nagłówkaRange:
nie zostaną spełnione.