Retrofit+okhttp+rxjava, 快取策略使用
阿新 • • 發佈:2018-11-16
主要涉及幾個要點:
- 要使用離線快取的頁面網路請求方式必須要用GET(POST不可以),其他不要的頁面還是用POST
- 在新增攔截器時,需要新增網路攔截器(
)和應用攔截器(.addNetworkInterceptor(new NetInterceptor()) //有網情況下,一分鐘內每次請求都會重新請求,不會走快取
)。如果addNetworkInterceptor和addInterceptor新增的是同一個攔截器(包含了有網、無網路的邏輯處理),與把他們分開處理是不同的;使用同一個攔截器時,每次都會攔截兩次,效能降低。.addInterceptor(new NoNetInterceptor()) //無網路的情況下:使用快取,並且快取的有效期為1天
- 不同的頁面對應著不同URL,並且這個URL必須是固定的,因為獲取快取的時候都是根據這個唯一的URL區分的,否則會找不到相應的快取資料。
俗語解釋:
- 有網的情況下,我們依然可以設定:第一次請求資料成功,快取成功後,在之後的1分鐘內,再次請求會直接從快取獲取資料而不是重新網路請求;1分鐘之後,不管有無快取,都會重新網路請求資料。
max-age=60(1分鐘)
- 無網的情況下,可以使用強制從快取獲取資料
CacheControl.FORCE_CACHE
- 無網路、有快取的情況下,怎麼控制不在使用快取資料了呢??可以使用
max-stale=60*60(1小時),1小時之後快取就失效了