React Native fetch cache не работает (не может включить кэширование) - PullRequest
0 голосов
/ 06 декабря 2018

Существует множество вопросов о том, как отключить кэш в React Native fetch.Кажется, я застрял с проблемой 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);

Однако в моем собственном приложении реагирования - вызовы API никогда не кэшируются.Я где-то читал, что кэширование не гарантируется, но я ожидал, что кэширование должно работать большую часть времени (устройство имеет достаточно памяти - если это контролирует очистку кэша).Я также пытаюсь использовать эмулятор и вижу, что вызовы всегда выполняются на сервере (никогда не кэшируются).

Может ли это быть из-за разработки?Кэширование отключено на эмуляторе?Я не могу найти документацию по этому вопросу.

...