簡體   English   中英

改造:緩存控制從未包含在響應中

[英]Retrofit: cache-control never included in response

無論我做什么,我都永遠不會在響應中看到標頭緩存控件

設置

  • 改造1.6.0
  • okHttp 1.6.0
  • okHttp-urlConnection 1.6.0
  • 傑森2.2.4
  • Android 4.0以上

1.配置

1.1我的OkHttpClient使用RestAdapter

OkHttpClient okHttpClient = new OkHttpClient();
Cache cache = new Cache(getCacheDir(), 1024);
okHttpClient.setCache(cache);

RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(URL)
            .setClient(new OkClient(okHttpClient))
            .setLogLevel(LogLevel.HEADERS)
            .build();

1.2使用默認OkHttpClient的RestAdapter在這里,在調試時,我可以看到客戶端的cache = null;

RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(URL)
            .setLogLevel(LogLevel.HEADERS)
            .build();

2日志

對於這兩種配置,日志都是相同的。

2.1要求

06-28 13:24:05.601:D / Retrofit(1581):---> HTTP GET myUri

06-28 13:24:05.601:D / Retrofit(1581):緩存控制:公共,最大年齡= 640000

06-28 13:24:05.601:D / Retrofit(1581):---> END HTTP(無內容)

2.2回應

06-28 13:24:05.701:D / Retrofit(1581):<--- HTTP 200 myUri(102ms)

06-28 13:24:05.701:D / Retrofit(1581)::HTTP / 1.1 200 OK

06-28 13:24:05.701:D / Retrofit(1581):連接:保持活動狀態

06-28 13:24:05.701:D / Retrofit(1581):內容類型:text / html

06-28 13:24:05.701:D / Retrofit(1581):日期:2014年6月28日星期六13:24:01 GMT

06-28 13:24:05.701:D / Retrofit(1581):OkHttp收到的Millis:1403961845708

06-28 13:24:05.701:D / Retrofit(1581):OkHttp-響應-來源:NETWORK 200

06-28 13:24:05.701:D / Retrofit(1581):OkHttp-Sent-Millis:1403961845680

06-28 13:24:05.701:D / Retrofit(1581):服務器:nginx / 1.6.0

06-28 13:24:05.701:D / Retrofit(1581):傳輸編碼:分塊

06-28 13:24:05.701:D / Retrofit(1581):不同:接受編碼

06-28 13:24:05.701:D / Retrofit(1581):X-Powered-By:PHP / 5.5.12-1〜dotdeb.1

06-28 13:24:05.701:D / Retrofit(1581):<--- END HTTP(-1字節正文)

編輯2014年3月7日

我注意到在此問題中,在發送GET請求時Retrofit + OkHttp可以,但是在發送POST時給出SocketTimetout,請求者獲得“緩存控制”作為響應。

04-11 18:00:41.291:D / Retrofit(16390):---> HTTP GET網址

04-11 18:00:41.291:D / Retrofit(16390):---> END HTTP(0字節正文)

04-11 18:00:42.008:D / Retrofit(16390):<--- HTTP 200網址(716ms)

04-11 18:00:42.015:D / Retrofit(16390)::HTTP / 1.1 200 OK

04-11 18:00:42.015:D / Retrofit(16390):緩存控制:max-age = 0,私有,必須重新驗證

盡管仍然不能在仿真器或實際設備中解決此問題……

我是愚蠢的,我們沒有在后端正確設置緩存!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM