发出请求时,可以设置 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
插件回调并返回缓存响应正文的适当子集来实现此目的。
属性
- 构造函数
void
constructor
函数如下所示:() => {...}
方法
createPartialResponse()
workbox-range-requests.createPartialResponse(
request: Request,
originalResponse: Response,
): Promise<Response>
若将 Request
和 Response
对象作为输入,此函数将返回一个 promise 来创建新的 Response
。
如果原始 Response
已包含部分内容(即其状态为 206),则系统会假定它已满足 Range:
要求,并将其原样返回。
参数
- request
请求
请求,其中应包含一个 Range: 标头。
- originalResponse
响应
响应。
返回
-
承诺<响应>
206 Partial Content
响应,其中包含 响应正文,设置为请求Range:
标头或416 Range Not Satisfiable
响应(如果 不符合“Range:
”标头的条件。