javascript - 浏览器是否可以检查它是否有 JS 库(无论其来源如何)并使用它?

标签 javascript node.js browser single-page-application

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/

相关文章:

JavaScript 日期字符串排序在 IE 和 Chrome 上的行为不同

javascript - 如何强制 Accordion 一次打开一个?

javascript - 如何使用JS制作一个自玩贪吃蛇游戏?

browser - 是否可以通过返回虚假的已安装字体列表来阻止浏览器指纹识别?

html - Avenir 字体无法在 Windows 操作系统上的任何浏览器上打开的网页上正确显示

JavaScript 在 IE 中有效,但在 Firefox 中无效

javascript - 如何使用 nodejs(加密)生成 32 字节的 SHA256 哈希,以避免 tweetnacl.js 抛出错误的 key 大小错误?

javascript - 无法在 Mongoose 回调中保存

node.js - Nodejs子进程: write to stdin from an already initialised process

html - 如何有效地处理 Dart 中的浏览器历史记录(即后退按钮)?