我有一个使用HttpFetch
中的aurelia-fetch-client v1.8.2
的Aurelia应用。我遇到的问题是Chrome浏览器正在我的部署之间缓存某些GET
请求URL。
例如一个特定的请求将发送到.../api/v1/users
,但此后已更改为.../api/v1/users?somequerystring=value
,但是客户端报告正在使用旧的URL。大约有3/4个用户正在发生这种情况。由于某些原因,我本人和少数用户可以正常工作,并且使用更新的GET
URL发出请求。
我在过去曾经历过响应缓存,并从那时起将'?cacheBust=' + new Date().getMilliseconds()
添加到每个GET
URL请求中以确保唯一性,但是这种新型缓存对我来说是陌生的。
值得注意的是,这可能是一些JS文件缓存,因为用户正在查看更新的前端页面。
打开开发人员控制台并执行Empty Cache and Hard Reload
显然可以,但是我可以期望用户在每次更新请求URL时都需要这样做。
有什么建议吗?
正如您自己提到的那样,以及评论,请检查它是否不仅仅是不正确缓存的.JS文件。
话虽如此,如果您确信它与获取客户端或远程调用有关,则可能需要查看本机fetch()API的Request.cache属性。考虑到围绕本机API的aurelia-fetch-client库只是一个包装器,您可以尝试以下方法:
const response = await _http.fetch('endpoint', { cache: 'no-store' });
在指向文档的引用链接中有很多其他示例。概括地说,no-store
选项告诉浏览器从远程服务器获取资源,而无需先查看缓存。