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有優先順序之分 是否生效與放...