Ao fazer uma solicitação, um cabeçalho range
pode ser definido para informar
ao servidor que ele deve retornar apenas uma parte da solicitação completa. Isso
é útil para determinados arquivos, como um arquivo de vídeo, em que um usuário
pode mudar o local de reprodução do vídeo.
O que este módulo faz?
Pode haver cenários em que você quer veicular um arquivo em cache,
mas o navegador definiu um cabeçalho range
. Normalmente, o cabeçalho
seria ignorado.
Esse módulo vai ler a resposta armazenada em cache e retornar o intervalo de dados especificado.
Uso básico
É possível usar as solicitações de intervalo do Workbox adicionando o plug-in à estratégia que você quer verificar.
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 Avançado
Para usar essa lógica fora do plug-in,
pode usar a função createPartialResponse()
.
import {createPartialResponse} from 'workbox-range-requests';
createPartialResponse(request, cachedResponse);
Para mais informações, consulte os documentos de referência.
Tipos
RangeRequestsPlugin
O plug-in de solicitação de intervalo facilita o envio de solicitações com um valor "Range" cabeçalho para ser atendidos por uma resposta armazenada em cache.
Ele faz isso interceptando o callback do plug-in cachedResponseWillBeUsed
e retornar o subconjunto apropriado do corpo da resposta armazenada em cache.
Propriedades
-
construtor
void
A função
constructor
tem esta aparência:() => {...}
-
retorna
-
Métodos
createPartialResponse()
workbox-range-requests.createPartialResponse(
request: Request,
originalResponse: Response,
)
Dado um objeto Request
e Response
como entrada, isso retornará uma
para um novo Response
.
Se o Response
original já tiver conteúdo parcial (ou seja, tiver
um status de 206), isso pressupõe que já atende ao Range:
e vai retorná-lo no estado em que se encontra.
Parâmetros
-
solicitação
Solicitação
Uma solicitação, que precisa conter um cabeçalho Range:
-
originalResponse
Resposta
Uma resposta.
Retorna
-
Promise<Response>
Uma resposta
206 Partial Content
, com o corpo da resposta definido como a fração de conteúdo especificada pelo cabeçalhoRange:
ou uma resposta416 Range Not Satisfiable
se o do cabeçalhoRange:
não podem ser atendidas.