okhttp配置快取策略 2 okhttp響應快取

2021-10-13 05:03:20 字數 1566 閱讀 7312

1. okhttp框架擁有很好的快取策略cachestrategy,並使用disklrucache技術對響應的內容進行儲存。要建立快取,要有以下條件:

可以讀寫的快取目錄

快取大小的限制

快取目錄應該是私有的,不信任的程式不能讀取快取內容

全域性使用者唯一的快取訪問例項。okhttp框架全域性必須只有乙個okhttpclient例項(new okhttpclient()),並在第一次建立例項的時候,配置好快取。

2. okhttp框架獲取響應資料有三種方法:/**

* 返回網路上的資料。如果沒有使用網路,則返回null。

public response networkresponse()

* 返回快取中的資料。如果不使用快取,則返回null。對應傳送的get請求,快取響應和網路響應   *  有可都非空。

public response cacheresponse()

public response priorresponse()

3. **設定快取目錄okhttpclient client = new okhttpclient();

int cachesize = 10 * 1024 * 1024; // 10 mib

file cachedirectory = new file("cache");

if (!cachedirectory.exists()) {

cachedirectory.mkdirs();

cache cache = new cache(cachedirectory, cachesize);

client.setcache(cache);強制使用網路響應request request = new request.builder()

.header("cache-control", "no-cache") // 重新整理資料

.url("")

.build();通過伺服器驗證快取資料是否有效request request = new request.builder()

.header("cache-control", "max-age=0")

.url("")

.build();強制使用快取響應request request = new request.builder()

.header("cache-control", "only-if-cached")

.url("")

.build();指定快取資料過時的時間int maxstale = 60 * 60 * 24 * 28; //4周

request request = new request.builder()

.header("cache-control", "max-stale=" + maxstale)

.url("")

.build();

注:http header中的max-age 和max-stale區別

max-age 指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。

max-stale 指示客戶機可以接收超出超時期間的響應訊息。如果指定max-stale訊息的值,那麼客戶機可以接收超出超時期指定值之內的響應訊息。

仿okhttp快取策略的資料快取

之前在面試中經常被問到看過哪些優秀的原始碼,吧啦吧啦說一大堆,問學到了哪些東西,吧啦吧啦又說一大堆,但是其實都是紙上談兵,並未結合到專案中。比如說okhttp的快取策略,okhttp的快取做的還是不錯的,有快取沒有過期就直接用,有快取過期了先用過期的,然後再聯網儲存,沒有快取再去聯網請求,之前也寫過...

OKHttp開源框架學習七 快取策略原始碼分析

目錄 系列文章 體現 cache類的put方法 cache類的get方法 okhttp開源框架學習一 同步請求總結 okhttp開源框架學習二 非同步請求總結 okhttp開源框架學習三 任務排程核心類dispatcher okhttp開源框架學習四 okhttp開源框架學習五 之retryandf...

nginx靜態資源快取策略配置

乍一看,客戶原來的配置好像沒什麼問題,該有的也全有了 這是客戶原來的配置 server location js css location htm html location mobile 乍看沒問題,但就是沒有生效,由於查詢nginx文件,發現nginx的location有優先順序之分 是否生效與放...