【问题标题】:Access browser cache using Javascript使用 Javascript 访问浏览器缓存
【发布时间】: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


【解决方案1】:

不可能 - 感谢您的 cmets。

我认为这是某种问题,因为无法阻止浏览器在首次加载时重新获取已缓存的 Web 应用程序的外部依赖项。 我有点惊讶没有办法解决这个问题。外部依赖项通常是应用程序包的较大部分,因此在许多情况下,这将允许将有效负载减少 50% 以上。

【讨论】:

    猜你喜欢
    • 2015-03-19
    • 2019-07-05
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2012-06-14
    • 2015-08-05
    相关资源
    最近更新 更多