Lors d'une requête, un en-tête range
peut être défini pour indiquer au serveur de ne renvoyer qu'une partie de la requête complète. Cette fonctionnalité est utile pour certains fichiers, comme un fichier vidéo, où un utilisateur peut modifier l'emplacement de lecture de la vidéo.
À quoi sert ce module ?
Dans certains cas, vous souhaiterez peut-être diffuser un fichier mis en cache
mais le navigateur a défini un en-tête range
. Normalement, l'en-tête
serait ignoré.
Ce module lit la réponse mise en cache et renvoie la plage de données spécifiée.
Utilisation de base
Vous pouvez utiliser les requêtes de plage Workbox en ajoutant le plug-in à la stratégie pour laquelle vous souhaitez vérifier les requêtes de plage.
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(),
],
});
);
Utilisation avancée
Pour utiliser cette logique en dehors du plug-in,
peuvent utiliser la fonction createPartialResponse()
.
import {createPartialResponse} from 'workbox-range-requests';
createPartialResponse(request, cachedResponse);
Pour en savoir plus, consultez la documentation de référence.
Types
RangeRequestsPlugin
Le plug-in de requête de plage permet de répondre facilement à une requête avec un en-tête "Plage" à l'aide d'une réponse mise en cache.
Pour ce faire, il intercepte le rappel du plug-in cachedResponseWillBeUsed
et renvoie le sous-ensemble approprié du corps de réponse mis en cache.
Propriétés
-
constructor
vide
La fonction
constructor
se présente comme suit :() => {...}
-
retours
-
Méthodes
createPartialResponse()
workbox-range-requests.createPartialResponse(
request: Request,
originalResponse: Response,
)
Étant donné des objets Request
et Response
en entrée, cette méthode renvoie une promesse pour un nouvel objet Response
.
Si l'élément Response
d'origine comporte déjà une partie du contenu
un état 206), cela suppose qu'il respecte déjà la Range:
et le renverra tel quel.
Paramètres
-
request
Requête
Une requête, qui doit contenir un en-tête Range.
-
originalResponse
Réponse
Une réponse.
Renvoie
-
Promise<Response>
Une réponse
206 Partial Content
, avec le corps de la réponse défini sur la tranche de contenu spécifiée par le champ l'en-têteRange:
, ou une réponse416 Range Not Satisfiable
si le Les conditions de l'en-têteRange:
ne peuvent pas être remplies.