gpt4 book ai didi

progressive-web-apps - 如何使用 Service Worker 和 srcset 创建离线应用?

转载 作者:行者123 更新时间:2023-12-01 04:54:58 25 4
gpt4 key购买 nike

我希望我的应用程序(一个静态网站)使用 Service Worker 离线运行。如果不缓存来自 srcset 的所有图像,我看不出有什么方法可以做到这一点。属性。我怎么看client hints会解决这个问题,但除了提供请求的文件之外,是否有一个解决方案可以在不涉及服务器做任何事情的情况下工作?

我也许可以看到 Service Worker 如何根据 img 中的信息计算要请求的图像。标签和图像命名约定...

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

最佳答案

完整版 srcset您确实必须缓存所有分辨率的功能。

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

一个简单的解决方案是始终对所有内容使用 2x 图像。更高的 DPI 使图像失真不那么明显,因此您可以 compress them more heavily以抵消更高分辨率的成本。

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

关于progressive-web-apps - 如何使用 Service Worker 和 srcset 创建离线应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38143107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com