javascript - Service Worker 根据屏幕分辨率缓存不同尺寸的图片
问题描述
如果 screen.width 很小,我想缓存“small_image.png”,否则缓存“big_image.png”。如何使用 ServiceWorker 做到这一点?
下面的代码将抛出 ReferenceError,因为 screen 没有在 service worker 上下文中定义。
self.addEventListener('install', function(e) {
e.waitUntil(
caches.open('stackoverflow').then(function(cache) {
if(screen.width <= 768){
return cache.addAll(lowResImages);
}else{
return cache.addAll(highResImages);
}
})
);
});
解决方案
如果您启用了适当的客户端提示,则此类信息可在您的服务工作者fetch
事件中作为请求标头使用。
到目前为止,它还没有暴露在ServiceWorkerGlobalScope
传递给install
处理程序的事件的内部或内部。
基本上,这意味着如果您在处理程序内部使用运行时缓存,则可以使用该信息,fetch
但在处理程序内部实现预缓存时则不能install
。
推荐阅读
- c# - 从输入字段更改焦点后返回 ImmersiveSticky
- amazon-web-services - 错误:在中止部署期间,某些实例可能已经部署了新的应用程序版本
- android - 动态视图的数据绑定
- c# - 当日期类型为 varchar 时,使用 C# csharp 按月 SQL 降序排列
- powershell - automating our RDC setup with a .bat file
- dji-sdk - 如何将航点从无人机下载到 Onboard-SDK?
- erlang - ets中名称参数的原因:未命名表的新
- c# - 处理 Item Select 上的 ViewModel 命令
- javascript - 按下按钮时如何在 div 中复制表单?
- ios13 - 警报视图在 ios13 中的 appdelegate 中自动关闭,并在 ios11 中正常工作