关于如何在React Native抓取中禁用缓存存在很多问题。我似乎一直困扰着 reverse 问题-我的服务器端API具有正确的缓存标头(对于Google Chrome中的访存调用,缓存工作正常)。
fetch('https://mywebsite.com/endpoint/', {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
}
}).then((response) => {
return response.json();
}).then((responseJson) => {
console.log(responseJson);
// Response has a timestamp, and I can verify that it is always fresh
});
在Chrome检查器中可见的响应标题:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Cache-Control: max-age=172800
Connection: Keep-Alive
Content-Length: 2748
Content-Type: application/json
Date: Thu, 06 Dec 2018 08:55:55 GMT
Expires: Sat, 08 Dec 2018 08:55:55 GMT
Keep-Alive: timeout=5, max=998
Pragma: cache
Server: Apache/2.4.29 (Ubuntu)
服务器(PHP)上的代码:
$expires = gmdate("D, d M Y H:i:s", time() + AppConfig::mobileApiCacheTimeInSeconds) . " GMT";
header("Expires: $expires");
header("Pragma: cache");
header("Cache-Control: max-age=" . AppConfig::mobileApiCacheTimeInSeconds);
但是,在我的react native应用程序中-永远不会缓存API调用。我读到某个地方不能保证缓存-但我希望缓存在大多数情况下都可以工作(设备有足够的内存-如果该控件可以控制缓存清除)。我也在尝试在模拟器上,发现总是对服务器进行调用(从不缓存)。
可能是因为它是开发版本吗?在模拟器上禁用了缓存吗?我找不到与此有关的任何文档。