Cuando se realiza una solicitud, se puede establecer un encabezado range
que le indique al servidor que muestre solo una parte de la solicitud completa. Esto es útil para ciertos archivos, como un archivo de video, en el que un usuario puede cambiar dónde reproducirlo.
¿Qué hace este módulo?
Puede haber situaciones en las que quieras entregar un archivo almacenado en caché
pero el navegador estableció un encabezado range
. Por lo general, se ignoraría el encabezado.
Este módulo leerá la respuesta almacenada en caché y mostrará el rango de datos especificado.
Uso básico
Para usar las solicitudes de rango de Workbox, agrega el complemento a la estrategia en la que deseas verificar las solicitudes de rango.
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(),
],
});
);
Uso avanzado
Si quieres usar esta lógica fuera del complemento,
puedes usar la función createPartialResponse()
.
import {createPartialResponse} from 'workbox-range-requests';
createPartialResponse(request, cachedResponse);
Para obtener más información, consulta los documentos de referencia.
Tipos
RangeRequestsPlugin
El complemento de solicitud de rango facilita que una solicitud con un encabezado "Range" se complete con una respuesta almacenada en caché.
Para ello, intercepta la devolución de llamada del complemento cachedResponseWillBeUsed
.
y mostrar el subconjunto apropiado
del cuerpo de la respuesta almacenada en caché.
Propiedades
-
constructor
void
La función
constructor
se ve de la siguiente manera:() => {...}
-
muestra
-
Métodos
createPartialResponse()
workbox-range-requests.createPartialResponse(
request: Request,
originalResponse: Response,
)
Si se proporcionan objetos Request
y Response
como entrada, se mostrará una promesa para un Response
nuevo.
Si el Response
original ya incluye contenido parcial (es decir, tiene
un estado de 206), esto supone que ya cumple con el Range:
los requisitos y lo devolverá tal como está.
Parámetros
-
request
Solicitud
Una solicitud, que debe contener un encabezado Range:
-
originalResponse
Respuesta
Una respuesta.
Muestra
-
Promesa<Respuesta>
Una respuesta
206 Partial Content
, con el cuerpo de la respuesta establecido en la porción de contenido especificada por el encabezadoRange:
de la solicitud, o una respuesta416 Range Not Satisfiable
si no se pueden cumplir las condiciones del encabezadoRange:
.