React Native提取缓存不起作用(无法启用缓存)

时间:2018-12-06 08:53:39

标签: javascript react-native caching http-headers fetch

关于如何在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调用。我读到某个地方不能保证缓存-但我希望缓存在大多数情况下都可以工作(设备有足够的内存-如果该控件可以控制缓存清除)。我也在尝试在模拟器上,发现总是对服务器进行调用(从不缓存)。

可能是因为它是开发版本吗?在模拟器上禁用了缓存吗?我找不到与此有关的任何文档。

0 个答案:

没有答案