Существует множество вопросов о том, как отключить кэш в 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 никогда не кэшируются.Я где-то читал, что кэширование не гарантируется, но я ожидал, что кэширование должно работать большую часть времени (устройство имеет достаточно памяти - если это контролирует очистку кэша).Я также пытаюсь использовать эмулятор и вижу, что вызовы всегда выполняются на сервере (никогда не кэшируются).
Может ли это быть из-за разработки?Кэширование отключено на эмуляторе?Я не могу найти документацию по этому вопросу.