Próbowałem użyć OkHttp i Retrofit do buforowania żądań HTTP. Ale nie wiem, dlaczego to nie działa.Nie można uzyskać buforowania HTTP w Androidzie
@Headers("Cache-Control: public, max-age=640000, s-maxage=640000 , max-stale=10000000")
@FormUrlEncoded
@POST("/news/getNewslist/")
void newsListByGenre(@Field("news_genre") String genre,
Callback<ArrayList<NewsStory>> callback);
Jest to jedno z żądań, ma wszystkie wymagane nagłówki. Co więcej, próbując przetestować, że coś jest zapisane w buforze plików, ręcznie przypisałem pamięć podręczną do OkHttpClient.
OkHttpClient name = new OkHttpClient();
try {
if (!cache.exists())
cache.createNewFile();
name.setResponseCache(new HttpResponseCache(cache,
10 * 1024 * 1024));
} catch (IOException e) {
e.printStackTrace();
}
Utworzona przeze mnie pamięć podręczna plików ma tylko 36 bajtów, więc jestem pewien, że nic nie jest buforowane.
Próbowałem również upewnić się, że serwer ma wymagane nagłówki, chociaż chcę, aby działał bez zakłóceń serwera, ale ustawiłem również nagłówki kontroli pamięci podręcznej w żądaniu. To jest dziennik debugowania z retrofitu.
null: HTTP/1.1 200 OK
Cache-Control: public, max-age=360000
Connection: Keep-Alive
Content-Length: 5167
Content-Type: application/json
Date: Fri, 28 Jun 2013 01:00:22 GMT
Keep-Alive: timeout=5, max=99
Server: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
X-Android-Received-Millis: 1372381311315
X-Android-Response-Source: NETWORK 200
X-Android-Selected-Transport: http/1.1
X-Android-Sent-Millis: 1372381311048
X-Powered-By: PHP/5.4.7
Przeczytałem mechanizm buforowania http raz po raz, ale wydaje mi się, że czegoś brakuje.
Hej, czy przypadkiem nie możesz mi pomóc w podobnej sytuacji ... http://stackoverflow.com/questions/22445177/trying-to-make-use-of-httpcache-android – Lion789