web-dev-qa-db-ja.com

okhttpのキャッシュを無効にする

okhttpのキャッシュを無効にすることは、Request.cacheControl(CacheControl.FORCE_NETWORK)を呼び出すことです。 OkHttpClient.classからcacheControlを設定することは可能ですか?私はすべての要求に対して1つのクライアントを持っているからです。だから私はokhttpClientからそれを無効にすることによってすべてのリクエストのキャッシュを無効にしたい

6
zihadrizkyef

これを使用してRetrofitを構築し、nullAPIが何もキャッシュしないためキャッシュを提供します。

private OkHttpClient createOkHttpClient() {
    return new OkHttpClient.Builder()
            ...
            .cache(null)
            .build();
}
16
Avi

クライアントにインターセプターを追加し、インターセプターにキャッシュ制御ヘッダーを追加します。以下のサンプルコードを確認してください。

    Interceptor interceptor = new Interceptor() {
        @Override public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            Request.Builder builder = request.newBuilder().addHeader("Cache-Control", "no-cache");
            request = builder.build();
            return chain.proceed(request);
        }
    };

    OkHttpClient mClient = new OkHttpClient.Builder()
            .addInterceptor(interceptor)
            .build();
8
YT Wang