Lorsque vous effectuez une requête, vous pouvez définir un en-tête range
qui indique au serveur de ne renvoyer qu'une partie de la requête complète. Cela est utile pour certains fichiers tels qu'un fichier vidéo, où l'utilisateur peut modifier l'endroit où lire la vidéo.
En quoi consiste ce module ?
Il peut arriver que vous souhaitiez diffuser un fichier mis en cache, mais que le navigateur ait défini un en-tête range
. Normalement, l'en-tête est ignoré.
Ce module lira la réponse mise en cache et renverra la plage de données spécifiée.
Utilisation de base
Vous pouvez utiliser les requêtes de plage de boîte de travail 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
Si vous souhaitez utiliser cette logique en dehors du plug-in, vous pouvez 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 facilite le traitement d'une requête comportant un en-tête "Range" par 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 la réponse mise en cache.
Propriétés
-
constructor
void
La fonction
constructor
se présente comme suit :() => {...}
-
retours
-
Méthodes
createPartialResponse()
workbox-range-requests.createPartialResponse(
request: Request,
originalResponse: Response,
)
Avec des objets Request
et Response
en entrée, une promesse pour un nouveau Response
est renvoyée.
Si l'élément Response
d'origine contient déjà du contenu partiel (c'est-à-dire si son état est 206), cela suppose qu'il répond déjà aux exigences Range:
et le renvoie 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
-
Promesse<Réponse>
Soit une réponse
206 Partial Content
, avec le corps de réponse défini sur la tranche de contenu spécifiée par l'en-têteRange:
de la requête, soit une réponse416 Range Not Satisfiable
si les conditions de l'en-têteRange:
ne peuvent pas être remplies.