微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

service-worker – 如何使用Service Worker和srcset创建脱机应用程序?

我希望我的应用程序(静态网站)使用服务工作者脱机运行.如果不缓存srcset属性中的所有图像,我看不到这样做的方法.我可以看到 client hints将如何解决问题,但除此之外是否有一个解决方案可以工作,而不涉及服务器做任何事情,但服务请求的文件

我可以看一下服务工作者如何根据img标签中的信息和图像的命名约定来计算要请求的图像……

有没有人解决这个问题,或者根本想过它?

解决方法

对于完整的srcset功能,您必须确实缓存所有分辨率.

虽然屏幕密度似乎是设备的固定属性,但它实际上是动态的,例如,智能手机可以投射/播放到电视屏幕.在具有多个显示器的桌面上(例如带有外部显示器的Retina MacBook),当浏览器窗口移动时,屏幕分辨率可能会改变.所有这些更改可能会在您完成缓存后很长时间内脱机,因此您无法确定将选择哪些解决方案.

一个简单的解决方案是始终使用2x图像.较高的DPI使图像失真不太明显,因此您可以compress them more heavily来抵消更高分辨率的成本.

另一种解决方案是捕获图像上的加载错误,并将srcset替换为您知道缓存的图像URL.顺便说一句:您可能需要在标记添加onerror =“…”,因为错误可能会在任何其他脚本有机会在页面上运行之前触发,或者在添加错误处理程序之前以编程方式检查img.complete&的所有图像元素. &安培; !img.naturalWidth检测错过的错误事件.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐