2016-12-14 31 views
0

我使用改造和畢加索圖書館。畢加索管理緩存本身。但是當我查看logcat時,我在下面看到日誌。這是什麼意思? Web服務和後端沒有正確發送緩存信息?我該如何解決這個問題才能正確創建Retrofit緩存。那麼,這些數據是否有意義?改進響應:緩存控制。這是什麼意思?

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Content-Type: application/json 
Date: Wed, 14 Dec 2016 07:15:48 GMT 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
OkHttp-Received-Millis: 1481597410805 
OkHttp-Response-Source: NETWORK 200 
OkHttp-Selected-Protocol: http/1.1 
OkHttp-Sent-Millis: 1481597409021 
Pragma: no-cache 
Server: Apache 
Transfer-Encoding: chunked 
+2

關於'緩存Control',請閱讀http://stackoverflow.com/questions/7573354/what-is -no-cache-and-no-store-in-cache-control – BNK

回答

1

您可以使用Interceptor將緩存選項設置爲OkHttp。

OkHttpClient client = new OkHttpClient(); 
client.networkInterceptors().add(new CachingControlInterceptor()); 
Retrofit restAdapter = new Retrofit.Builder() 
     .client(client) 
     .baseUrl(Constants.BASE_URL) 
     .addConverterFactory(GsonConverterFactory.create(gson)) 
     .build(); 

和CachingControlInterceptor是:

public class CachingControlInterceptor implements Interceptor { 
@Override 
public Response intercept(Chain chain) throws IOException { 
    Request request = chain.request(); 

    // Add Cache Control only for GET methods 
    if (request.method().equals("GET")) { 
     if (ConnectivityUtil.checkConnectivity(YaootaApplication.getContext())) { 
      // 1 day 
      request = request.newBuilder() 
        .header("Cache-Control", "only-if-cached") 
        .build(); 
     } else { 
      // 4 weeks stale 
      request = request.newBuilder() 
        .header("Cache-Control", "public, max-stale=2419200") 
        .build(); 
     } 
    } 

    Response originalResponse = chain.proceed(request); 
    return originalResponse.newBuilder() 
     .header("Cache-Control", "max-age=600") 
     .build(); 
} 
} 

看到這個: https://stackoverflow.com/a/34401686/850347

+0

這正是我需要讓我的魷魚服務器識別需要爲Fresco緩存(通過OkHttp)的請求! !!!!! – oddmeter