okhttp快取問題詳細講解

2021-08-08 05:39:37 字數 1955 閱讀 7315

1.在okhttpclient構造時設定快取路徑

2.構造request時配置快取策略

request request = new request.builder().url("").build();  

client.newcall(request).enqueue(new callback()

@override

public void onresponse(call call, response response) throws ioexception

runonuithread(new runnable()

});

} catch (jsonexception e)

} }

});

請求完畢之後,用乙個textview將請求結果顯示出來,當請求完畢之後,在我們上面所說的那個目錄下,可以看到如下三個檔案:

上面的配置應該已經可以滿足許多小夥伴的需求了,可是很多時候我們還有許多其他的需求,那麼這些需求我們可以在構造request的時候通過cachecontrol來進行進一步的配置。

在構造request的時候,我們可以配置cachecontrol,配置有兩種方式,一種是構造cachecontrol,還有一種是直接使用cachecontrol中的常量,我們來分別看一下:

cachecontrol cc = new cachecontrol.builder()  

//不使用快取,但是會儲存快取資料

//.nocache()

//不使用快取,同時也不儲存快取資料

// .nostore()

//只使用快取,(如果我們要載入的資料本身就是本地資料時,可以使用這個,不過目前尚未發現使用場景)

//.onlyifcached()

//手機可以接收響應時間小於當前時間加上10s的響應

// .minfresh(10,timeunit.seconds)

//手機可以接收有效期不大於10s的響應

// .maxage(10,timeunit.seconds)

//手機可以接收超出5s的響應

.maxstale(5,timeunit.seconds)

.build();

request request = new request.builder()

.cachecontrol(cc)

.url("").build();

這個用起來還是比較簡單的,沒什麼好說的,重要**看注釋。

如果直接使用cachecontrol中的常量,則不用呼叫上面那麼多的方法,使用方式

request request = new request.builder()  

//強制使用網路

// .cachecontrol(cachecontrol.force_network)

//強制使用快取

.cachecontrol(cachecontrol.force_cache)

.url("").build();

Html5離線快取詳細講解

離線快取是html5新特性之一,簡單理解就是第一次載入後將資料快取,在沒有清除快取前提下,下一次沒有網路也可以載入,用在靜態資料的網頁或遊戲比較好用。當然,html5新的特性都不是所有瀏覽器都能支援的,離線快取也一樣。反正ie9 包括 及ie9以下的瀏覽器目前是不支援的。如果用在移動端,應該都能支援...

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

1.okhttp框架擁有很好的快取策略cachestrategy,並使用disklrucache技術對響應的內容進行儲存。要建立快取,要有以下條件 可以讀寫的快取目錄 快取大小的限制 快取目錄應該是私有的,不信任的程式不能讀取快取內容 全域性使用者唯一的快取訪問例項。okhttp框架全域性必須只有乙...

仿okhttp快取策略的資料快取

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