工作框范围请求

发出请求时,可以设置 range 标头来告知 让服务器仅返回完整请求的一部分。这个 对于某些文件(如视频文件)非常有用 可能会改变视频的播放位置

此模块有何用途?

在某些情况下,您可能需要提供缓存的文件 但浏览器设置了 range 标头。通常是标头 将会被忽略。

此模块将读取缓存的响应并返回指定的数据范围。

基本用法

您只需将该插件添加到 策略。

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(),
    ],
  });
);

高级用法

如果您想在插件之外使用此逻辑,可以使用 createPartialResponse() 函数。

import {createPartialResponse} from 'workbox-range-requests';

createPartialResponse(request, cachedResponse);

如需了解详情,请参阅参考文档

类型

RangeRequestsPlugin

借助范围请求插件,您可以轻松地使用缓存的响应来满足包含“Range”标头的请求。

它通过拦截 cachedResponseWillBeUsed 插件回调并返回缓存响应正文的适当子集来实现此目的。

属性

方法

createPartialResponse()

workbox-range-requests.createPartialResponse(
  request: Request,
  originalResponse: Response,
)

若将 RequestResponse 对象作为输入,此函数将返回一个 promise 来创建新的 Response

如果原始 Response 已包含部分内容(即其状态为 206),则系统会假定它已满足 Range: 要求,并将其原样返回。

参数

  • request

    请求

    请求,其中应包含一个 Range: 标头。

  • originalResponse

    响应

    响应。

返回

  • 承诺<响应>

    206 Partial Content 响应,其中包含 响应正文,设置为请求 Range: 标头或 416 Range Not Satisfiable 响应(如果 不符合“Range:”标头的条件。