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