在 Android React Native 上禁用 HTTP 缓存

问题描述 投票:0回答:2

有什么方法可以避免在 Android root 设备上的 http_cache 中存储 api 请求和响应。

我已经尝试过“缓存控制”,但没有成功。

react-native axios fetch
2个回答
1
投票

OkHttp 控制缓存。如果要禁用缓存,请在

 中设置 
cacheSize=0

node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/OkHttpClientProvider.java

0
投票

您可以创建一个自定义

OkHttpClientFactory
类来阻止默认的缓存行为:

class OkHttpClientFactoryWithoutCache : OkHttpClientFactory {

    override fun createNewNetworkModuleClient(): OkHttpClient {
        // No timeouts by default
        // No cache by default
        return OkHttpClient.Builder()
            .connectTimeout(0, TimeUnit.MILLISECONDS)
            .readTimeout(0, TimeUnit.MILLISECONDS)
            .writeTimeout(0, TimeUnit.MILLISECONDS)
            .cookieJar(ReactCookieJarContainer()).build()
    }
}

在 MainActivity onCreate 方法中设置自定义 HttpClientFactory:

override fun onCreate(savedInstanceState: Bundle?) {
    OkHttpClientProvider.setOkHttpClientFactory(OkHttpClientFactoryWithoutCache())
    super.onCreate(null);
}
© www.soinside.com 2019 - 2024. All rights reserved.