okhttp原理和優缺點

2021-09-29 07:45:54 字數 2041 閱讀 5451

});okhttp是乙個高效能的http庫,支援ip切換、url重試、執行緒管理、快取管理、連線復用等

支援https/http2/websocket(伺服器可主動推送訊息)

內部維護任務佇列執行緒池,友好支援併發訪問

內部維護連線池,支援多路復用,減少連線建立開銷

提供***鏈,實現request和response的分層處理

okio提供超時機制

socket建立支援最佳路由

官網對***的解釋是:***是okhttp中提供的一種強大機制,它可以實現網路監聽、請求以及響應重寫、請求失敗重試等功能。

1 retryandfollowupinterceptor

檢驗返回的 response ,如果出現異常情況,則進行重連操作。

2 bridgeinterceptor 僑接***

設定內容長度,內容編碼

設定gzip壓縮,並在接收到內容後進行解壓。省去了應用層處理資料解壓的麻煩

新增cookie

設定其他報頭,如user-agent,host,keep-alive等,其中keep-alive是實現多路復用的必要步驟

3 cacheinterceptor 快取***

功能: 實現快取功能的***

當網路請求有符合要求的cache時直接返回cache

當伺服器返回內容有改變時更新當前cache

如果當前cache失效,刪除

4 connectinterceptor

開啟乙個面向指定伺服器的連線,並且執行下乙個***

5 callserverinterceptor

這是 okhttp 庫中***鏈的最後乙個***,也是這個***區具體發起請求和獲取響應。

response getresponsewithinterceptorchain() throws ioexception 

interceptors.add(new callserverinterceptor(forwebsocket));

interceptor.chain chain = new realinterceptorchain(interceptors, null, null, null, 0,

originalrequest, this, eventlistener, client.connecttimeoutmillis(),

client.readtimeoutmillis(), client.writetimeoutmillis()); //標記1

realconnection connection) throws ioexception

@override public response intercept(interceptor.chain chain) throws ioexception
建立一系列***,並將其放入乙個***list集合中。

建立乙個***鏈realinterceptorchain,並執行***鏈的proceed方法,這個proceed方法的核心是繼續建立下乙個***鏈。

LVM的工作原理和優缺點

lvm logcal volume manager邏輯卷管理器 工作原理 lvm在每個物理卷頭部都維護了乙個metadata,每個metadata中都包含了整個vg volume group 捲組 的資訊,包括每個vg的布局配置,pv physical volume 物理卷 的編號,lv logic...

css sprite原理優缺點及使用

css sprites在國內很多人叫css精靈,是一種網頁應用處理方式。它允許你將乙個頁面涉及到的所有零星都包含到一張大圖中去,這樣一來,當訪問該頁面時,載入的就不會像以前那樣一幅一幅地慢慢顯示出來了。對於當前網路流行的速度而言,不高於200kb的單張的所需載入時間基本是差不多的,所以無需 顧忌這個...

CDN的原理及優缺點

cdn的全稱是content delivery network,即內容分發網路。其目的是通過在現有的internet中增加一層新的cache 快取 層,將 的內容發布到最接近使用者的網路 邊緣 的節點,使使用者可以就近取得所需的內容,提高使用者訪問 的響應速度。從技術上全面解決由於網路頻寬小 使用者...