BLUF
是否可以让浏览器使用某种识别指标(哈希、签名、版本 ID 等)来检查它是否已经具有从其他来源缓存的 JS 库,然后使用缓存的版本而不是重新加载下载了吗?
问题
假设离线网络上有数百台设备,它们的单页应用程序 (SPA) 略有不同,它们都使用相同的单个大型 JS 库。他们各自为本地的水疗中心和图书馆提供服务。这些设备的管理员可以快速访问某些设备,但可以缓慢访问其他设备。我试图确定是否有办法通过利用大型库的共同使用来加快“慢速访问”设备将 SPA 下载到管理员浏览器的速度。
理想的解决方案是机会主义的。它会询问浏览器是否有具有特定哈希值的大型 JS 库(liblarge.js
,sha-256: B4...X
),以及是否有使用它,如果没有,则通过慢速链接加载该链接。
我知道我可以尝试确定快速访问设备,然后尝试通过它们为大型库提供服务,但这需要某种侦察和开销。
我也明白我可以尝试在网络上放置 CDN 之类的东西并为大型 JS 库提供服务,但离线网络的其他方面使这变得困难。
最佳答案
如果你控制源代码
将它们全部更新为对库+版本组合使用单个 URL,该组合位于快速设备上,无论特定 SPA 位于哪个设备上。确保库+版本组合由 future 的缓存 header 提供服务。 (更新库+版本将需要更改其路径/名称,以击败缓存 header 。)
如果您不控制源代码
不,浏览器没有 API 可以让您执行此操作,尤其是因为查询其他来源的库页面/应用程序使用的库会存在安全隐患。
关于javascript - 浏览器是否可以检查它是否有 JS 库(无论其来源如何)并使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57727730/