1. 程式人生 > >Retrofit+okhttp+rxjava, 快取策略使用

Retrofit+okhttp+rxjava, 快取策略使用

主要涉及幾個要點:

  1.  要使用離線快取的頁面網路請求方式必須要用GET(POST不可以),其他不要的頁面還是用POST
  2. 在新增攔截器時,需要新增網路攔截器
    .addNetworkInterceptor(new NetInterceptor()) //有網情況下,一分鐘內每次請求都會重新請求,不會走快取
    )和應用攔截器
    .addInterceptor(new NoNetInterceptor())   //無網路的情況下:使用快取,並且快取的有效期為1天
    )。如果addNetworkInterceptor和addInterceptor新增的是同一個攔截器(包含了有網、無網路的邏輯處理),與把他們分開處理是不同的;使用同一個攔截器時,每次都會攔截兩次,效能降低。
  3. 不同的頁面對應著不同URL,並且這個URL必須是固定的,因為獲取快取的時候都是根據這個唯一的URL區分的,否則會找不到相應的快取資料。

俗語解釋:

  •      有網的情況下,我們依然可以設定:第一次請求資料成功,快取成功後,在之後的1分鐘內,再次請求會直接從快取獲取資料而不是重新網路請求;1分鐘之後,不管有無快取,都會重新網路請求資料。 
    max-age=60(1分鐘)
  •   無網的情況下,可以使用強制從快取獲取資料
    CacheControl.FORCE_CACHE
  • 無網路、有快取的情況下,怎麼控制不在使用快取資料了呢??可以使用
    max-stale=60*60(1小時),1小時之後快取就失效了