0
異なるキャッシュタイムを異なるエンドポイントに設定する必要がありますが、そのベストプラクティスは何ですか?Retrofit 2 - 異なるエンドポイントに動的キャッシュ時間を設定する方法
これは私のレトロフィット・インターフェースです:
public interface ServerApi {
@GET("a1")// need to get 10 mintuns cache time
Observable<A1> getA1();
@GET("a2")// need to get 20 mintuns cache time
Observable<A2> getA2();
@GET("a3")// need to get 30 mintuns cache time
Observable<A3> getA3();
は、これは私のネットワーククラスです:
public class Network {
Network() {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addNetworkInterceptor(logging)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
retrofit.create(ServerApi.class);
}}
は私のサーバーではないので、私はキャッシュ制御を制御できません。 これを行うにはハードコードインターフェイスに書き込む必要がありますか?アノテーションのヘッダー付きの ? @Headers( "Cache-Control:max-age = 640000") – Yoni
まあ、それは依存しています。特定のキャッシング動作を要求するために、リクエストでキャッシュコントロールヘッダーを送信できますが、自分でテストし、サーバーがキャッシュコントロールヘッダーで応答するかどうかを確認する必要があります。そうでない場合は、レスポンスインターセプタを作成し、レスポンスを傍受して正しいヘッダーを添付する必要があります。 –
私は今、それを確認します、ありがとう! – Yoni