发出请求时,可以设置 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,
)
若将 Request
和 Response
对象作为输入,此函数将返回一个
promise 来创建新的 Response
。
如果原始 Response
已包含部分内容(即其状态为 206),则系统会假定它已满足 Range:
要求,并将其原样返回。
参数
-
request
请求
请求,其中应包含一个 Range: 标头。
-
originalResponse
响应
响应。
返回
-
承诺<响应>
206 Partial Content
响应,其中包含 响应正文,设置为请求Range:
标头或416 Range Not Satisfiable
响应(如果 不符合“Range:
”标头的条件。