【发布时间】:2021-03-16 17:45:59
【问题描述】:
我的 Web 应用正在引用 CDN 来加载 React 等库,确保下次访问该应用时,将从浏览器缓存中检索 React。
当用户第一次访问我的应用程序时,浏览器缓存很有可能已经从其他 CDN 获取 React(访问其他应用程序的结果也使用从不同 CDN 加载的 React)。我的应用所需的 React 的 URL 会有所不同,因此仍会下载资源。如何避免?
如果可以从代码访问浏览器缓存,则可以通过资源名称查询并检索包含“react”和“17”的资源,因此已经存在的缓存资源可以用作“React v. 17” " 第一次访问我的应用时。
是否有任何计划/现有标准允许在运行时声明:“我的应用需要 React v.17 - 请重用您已经缓存的资源或使用具有给定 url(CDN 链接)的资源”?
【问题讨论】:
-
你想做的事是不可能的。除非浏览器制作某种全球 CDN,否则怀疑它是否会起作用。
-
我同意。此外,这并不是一个真正需要解决的问题,不是吗?它只会影响网站的部分首次访问者。
-
在 2021 年,如果 app1 从 url A 加载依赖项 x,然后 app2 想要加载相同的依赖项 x,则无法重用已缓存的 x,除非 app2 从相同的 url A 加载 x。 . 不能只在运行时说:请给我版本 5 的 lib x - 如果你有它在缓存中,请重用它。如果你没有它,那么从 url A 获取它。这很有趣 :)
-
应用程序无法知道 url A 托管的文件与 url B 相同。它们是不同的资源。您正在尝试解决影响有限部分首次使用用户的非问题,而您提出的任何“解决方案”都可能导致其他问题。如果您想优化网站的加载,Google 已经发布了大量关于该主题的材料。
标签: javascript performance google-chrome microsoft-edge