我试图在我的应用中实施Retrofit,以及它工作得很好的一切,除了请求没有被缓存。
所以我有:
@GET("/mobile/api.php")
public void getPromos(
@QueryMap Map<String, String> options,
Callback<ResultPromotions> callBack);
.....
requestFacade.addHeader("Authorization", authorizationValue);
requestFacade.addHeader("Cache-Control", "public, max-age=600");
...
RestAdapter adapter = new RestAdapter.Builder()
.setRequestInterceptor(requestInterceptor)
.setClient(new OkClient(okHttpClient))
.setEndpoint(ENDPOINT)
.setConverter(new GsonConverter(gson))
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
所以我的问题是:剂量改造缓存授权请求?或者无法缓存此类请求?
答案 0 :(得分:5)
Retrofit本身绝对没有缓存。
如果你想要缓存,它必须位于Retrofit之上的应用程序层,它知道你的域以及如何在其中缓存内容,或者它需要位于Retrofit下面的HTTP客户端层,后者知道HTTP的语义
OkHttp也是Square的HTTP客户端,它支持缓存服务器响应的语义。例如,如果来自服务器的响应具有Cache-Control
标头,则它将被缓存,以便从缓存中提取相同资源的后续请求。