Google chrome Aurelia获取客户端缓存URL

Google chrome Aurelia获取客户端缓存URL,google-chrome,caching,aurelia,aurelia-fetch-client,Google Chrome,Caching,Aurelia,Aurelia Fetch Client,我有一个使用HttpFetch的Aurelia应用程序,它来自Aurelia fetch client v1.8.2。我遇到的问题是Chrome浏览器在我的部署之间缓存了一些GET请求URL 例如,一个特定的请求将转到../api/v1/users,但此后已更改为../api/v1/users?somequerystring=value,但客户端报告仍在使用旧URL。大约有三分之四的用户都有这种情况。出于某种原因,我和少数用户工作正常,请求是使用更新的GETURL发出的 我以前经历过响应缓存,后

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

例如,一个特定的请求将转到
../api/v1/users
,但此后已更改为
../api/v1/users?somequerystring=value
,但客户端报告仍在使用旧URL。大约有三分之四的用户都有这种情况。出于某种原因,我和少数用户工作正常,请求是使用更新的
GET
URL发出的

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

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

让开发人员控制台打开并执行
空缓存和硬重新加载
显然是可行的,但我可以期望我的用户在更新请求URL时需要这样做


有什么建议吗?

正如您自己所提到的,还有一条评论,请检查是否只是一个.JS文件被不当缓存

也就是说,如果您确信它与fetch客户端或远程调用相关,那么您可能需要查看本机fetch()API的属性。考虑到aurelia fetch client library只是围绕本机API的一个包装器,您可以尝试以下方法:

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

在文档的参考链接中还有很多例子。但简而言之,
no store
选项告诉浏览器从远程服务器获取资源,而无需首先查看缓存。

正如您自己所提到的,以及一条注释,请检查是否只是一个.JS文件未正确缓存

也就是说,如果您确信它与fetch客户端或远程调用相关,那么您可能需要查看本机fetch()API的属性。考虑到aurelia fetch client library只是围绕本机API的一个包装器,您可以尝试以下方法:

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

在文档的参考链接中还有很多例子。但简而言之,
no store
选项告诉浏览器从远程服务器获取资源,而无需首先查看缓存。

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