【问题标题】:Aurelia Fetch Client Caching URLAurelia 获取客户端缓存 URL
【发布时间】:2020-09-22 08:23:33
【问题描述】:

我有一个使用来自aurelia-fetch-client v1.8.2HttpFetch 的Aurelia 应用程序。我遇到的问题是 Chrome 浏览器在我的部署之间缓存了一些 GET 请求 URL。

例如一个特定的请求会发送到.../api/v1/users,但后来更改为.../api/v1/users?somequerystring=value,但是客户报告说旧的URL 仍在使用中。它发生在大约 3/4 的用户身上。出于某种原因,我和一小部分用户正常工作,并使用更新的GET URL 发出请求。

我以前体验过响应缓存,后来我在每个GET URL 请求中添加了'?cacheBust=' + new Date().getMilliseconds() 以确保唯一性,但是这种新型缓存对我来说并不熟悉。

值得注意的是,当用户看到更新的前端页面时,这可能是一些 JS 文件缓存。

打开开发者控制台并执行Empty Cache and Hard Reload 显然是可行的,但我可以预期,每当我更新请求 URL 时,我的用户都需要这样做。

有什么建议吗?

【问题讨论】:

  • 你遇到的好问题。在幕后,它仍然是您在那里提到的相同技术:通过查询参数进行缓存突发。也许如果你愿意,可以创建一个 PR 来添加一个能够爆缓存的配置?
  • 您确定缓存是在get 请求url 上完成的吗?您的应用程序代码更有可能缓存在客户端浏览器中。您应该配置您的服务器以服务index.html 页面而不进行缓存。然后 - 每当您更新代码时。所有用户都将获得新版本。 (webpack、require 等确实将缓存破坏机制应用于他们创建的包)

标签: google-chrome caching aurelia aurelia-fetch-client


【解决方案1】:

正如您自己提到的,以及评论,请检查它是否不仅仅是一个 .JS 文件被不正确地缓存。

话虽如此,如果您确信它与 fetch 客户端或远程调用有关,您可能需要查看本机 fetch() API 的 Request.cache 属性。考虑到 aurelia-fetch-client 库只是这个原生 API 的一个包装器,您可以尝试以下方法:

const response = await _http.fetch('endpoint', { cache: 'no-store' });

在文档的引用链接中有更多示例。但简而言之,no-store 选项告诉浏览器从远程服务器获取资源,而无需先查看缓存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2020-08-04
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多