在我的Android應用程序中,我使用了包含okhttp的retrofit 2。 我用下面的代碼來設置緩存Retrofit 2:緩存響應失效後緩存不起作用
OkHttpClient.Builder httpBuilder = new OkHttpClient.Builder();
File httpCacheDirectory = new File(MyApplication.getInstance().getCacheDir(), "responses");
Cache cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);
httpBuilder.cache(cache);
OkHttpClient httpClient = httpBuilder.build();
Retrofit.Builder builder = new Retrofit.Builder().
baseUrl(ApplicationConstants.BASE_API_URL).
client(httpClient).
addConverterFactory(GsonConverterFactory.create(gson));
緩存頭被從服務器端的響應集。它緩存文件就好了,並從緩存中顯示出來,直到緩存文件過期。
問題是當緩存過期時,它不能再被緩存。這不再緩存或替換舊的緩存文件。我認爲它應該自動清理舊的無效緩存文件,並用新的響應替換並緩存它。
如何清除無效響應並緩存新的有效響應。
我一直在嘗試近兩天,沒有解決方案。實際上對我來說,似乎我正在按照文檔做所有事情。還有別的可能是錯的嗎?
下面是okhttp
D/OkHttp: Connection: keep-alive
D/OkHttp: Content-Type: application/json; charset=utf-8
D/OkHttp: Vary: Accept-Encoding
D/OkHttp: Transfer-Encoding: chunked
D/OkHttp: Server: Cowboy
D/OkHttp: X-Frame-Options: SAMEORIGIN
D/OkHttp: X-Xss-Protection: 1; mode=block
D/OkHttp: X-Content-Type-Options: nosniff
D/OkHttp: Date: Tue, 02 Aug 2016 17:39:23 GMT
D/OkHttp: X-Pagination: {"total":34,"total_pages":2,"first_page":true,"last_page":false,"prev_page":null,"next_page":2,"out_of_range":false}
D/OkHttp: Cache-Control: max-age=10800, public, no-transform
D/OkHttp: Etag: W/"4dcf69c9456102fd57666a1dff0eec3a"
D/OkHttp: X-Request-Id: 1fb917ac-7f77-4c99-8a3b-20d56af9d441
D/OkHttp: X-Runtime: 0.081711
D/OkHttp: Via: 1.1 vegur
我的迴應日誌JSON響應我的cache頭低於:
由於提前,
我不能重現此。 https://gist.github.com/swankjesse/29e4c343a785e586a6657022636d294e –
@JesseWilson你提到的測試文件通過。但在真實設備上,我的應用程序仍然存在此問題。它與改進1.9和okhttp3工作正常。 – StarWars
@JesseWilson我也添加了回覆日誌。你能幫忙解決這個問題嗎? – StarWars