weex 在 iOS 上如何實現常見的網路快取

2021-09-11 12:04:29 字數 1227 閱讀 3509

摘要: weex 旨在兼顧web動態性與native的使用者體驗,如果想將兩者的優勢最大化,那麼快取就顯得格外重要,本文介紹如何利用快取,實現weex頁面迅速開啟,甚至「秒開」的效果。

前言 weex 旨在兼顧web動態性與native的使用者體驗,如果想將兩者的優勢最大化,那麼快取就顯得格外重要,本文介紹如何利用快取,實現weex頁面迅速開啟,甚至「秒開」的效果。 正文

要實現 native 端的快取,需要兩個層面:

單純快取js檔案是沒用的,除非你的js檔案是hello world級別:不會在js內部進行網路請求載入其他資源。有人說我的js也有網路請求,請求了一張,也是可以的呀?十有**那是 sdwebimage 功勞,那是你實現了載入的協議,sdwebimage已經幫你做了快取了。

下面詳細來看下如何讓 weex 在 ios 上支援常見的網路快取:

js 檔案快取

大致有兩種思路:

預載入方式也是常見的快取方式,啟動後預先載入,在此不做贅述。

具體的思路用流程圖表示如下:

具體的步驟如下:

渲染時重寫render

在頁面使用自定義wxsdkinstance替換原wxsdkinstance

@override public void renderbyurl(string pagename, string url, mapoptions, string jsoninitdata, wxrenderstrategy flag) if(!textutils.isempty(local)else } /** * 獲取本地js路徑 */ private string getlocaljs() } catch (exception e) return ""; }

第二步 渲染時重寫render

第三步 在頁面使用自定義wxsdkinstance替換原wxsdkinstance

request 快取

上面介紹的是js的快取,但是 js 檔案快取後,還是無法實現無網路狀況下,直接開啟 js 頁面,js 頁面還有大量的資源檔案,js 檔案內部還是會傳送網路請求,這些網路請求依然需要用到快取策略。

這個部分的快取基本的思路如下:

weex的網路請求部分,可以設定擴充套件,設定後,所有的weex sdk的網路請求都會經由該擴充套件處理,所以request部分的請求,實際上與傳統的快取是一樣的。比如我們熟悉的nscache、yycache等第三方的網路請求方式也是可以復用的。

在iOS上實現瀑布流介面

前陣子需要做乙個需求,在iphone上實現瀑布流效果。第一眼看到這個需求,我想到的兩種解決方案分別是 1.使用多個uitableview,然後控制它們同時滾動 2.使用乙個uiscrollview,然後參考uitableview的實現自己做乙個符合需求並且以後可以重用的控制項。我首先嘗試了第乙個方案...

在iOS上實現瀑布流介面

前陣子需要做乙個需求,在iphone上實現瀑布流效果。第一眼看到這個需求,我想到的兩種解決方案分別是 1.使用多個uitableview,然後控制它們同時滾動 2.使用乙個uiscrollview,然後參考uitableview的實現自己做乙個符合需求並且以後可以重用的控制項。我首先嘗試了第乙個方案...

iOS 如何實現在文字上新增拼音

一 介紹 最近專案有乙個需求,需要給朗誦的文字新增對應的拼音,而且要求使用原生的控制項實現。一開始聽到這個需求挺懵逼的,感覺有點難。後來,靜下來想一下,其實還是可以實現的,無非就是自定義了。下面,就來說說思想。二 思想 server端首先返回漢字和拼音一一對應的字串,我們根據需要分別擷取存入陣列。乙...