本文分享嘉賓:毛帥,又拍管家資深開發工程師,主要負責又拍管家、圖管小程式第三方平台、圖管小程式等專案的開發、維護及拓新工作。熟悉 js / c++ 等語言,有豐富的 nodejs 開發經驗,熱衷於研究高可用服務架構及底層實現原理。
以下是分享內容:
首先我來介紹一下又拍雲和又拍管家之間的關係。
又拍管家是延續又拍網的多年處理經驗,從 2005 年 6 月推出服務以來,以儲存、外鏈、展示三大服務內容為主要經營業務專注於雲計算領域,致力於為使用者創造卓越而**低廉的雲計算服務。
又拍管家主要面對的主要使用者群體是一些中小商家、產品經銷商等,例如某品牌服飾的**商,他的乙個需求是分派其所持有的不同款式服飾給銷售人員,他所需要的就是能夠提高工作效率的展示型工具,而不是從「展示到銷售到售後」一整套的鏈路需求;此外還有一些使用者是幾個人的小團隊、小型創業公司、亦或者是用作個人相簿等工具使用的個人,對於這一類的使用者,他們可能不願意甚至是承擔不起包括:
對於這些使用者來說,他們的需求首先是要搶占資源、占得先機,銷量是在所有要素中居首位的;其次是成本,他們會將更多的時間和成本投入到運營中,節省產品開發、維護的成本;
又拍小程式針對這些「無開發經驗」的特殊群體,量身打造了完美符合他們需求的專屬小程式,具有以下的優勢:
又拍小程式依託又拍雲強大的雲服務能力,使得產品在實現和使用過程中更加便捷、穩定和快速。對於又拍管家而言,使用者遍布全國,甚至是其他國家,那麼 cdn 的重要意義不言而喻,它能夠確保每乙個使用者在使用我們產品的時候都能有最好的使用體驗,確保小程式資源的載入。
1、記憶體
舉個例子,比如我們獲取到一些 model 資料,再次使用的時候沒有必要再去服務端請求,可以去記憶體裡查詢。如果限制是 5m 記憶體,當前所有 model 把記憶體塞滿後,再去伺服器請求資料,如何判斷是塞進記憶體還是進行適當的淘汰,才能讓小程式保持相當於記憶體給他加速時候的速度又不會出現 oom 的問題?這裡運用佇列的概念,先進、先出來維護,新進來乙個 model ,淘汰掉最舊的乙個。體驗更好的方法如運用 lru ,資料分為熱資料和冷資料,熱資料是可以重複利用的,沒有必要每次去請求資料,不常使用的冷資料則沒有必要長期佔據記憶體。這些思想可以在小程式在記憶體管理方面給我們提供一些幫助。
2、環境控制
3、靜態資源
此外,使用者主觀想要的,是不是最好的?我們的小程式上線以後,一些商家上傳了最高清的來給他們的使用者檢視,但是我們作為服務商需要節省頻寬資源,質量越高,當訪問量上來之後,頻寬的消耗就越大,因此我們在上傳的時候進行壓縮、格式選擇 ( webp 格式)、雲處理等操作。
4、渲染控制
△ setdata 渲染方法的**片段
如上圖,是 setdata 的渲染方法的簡單的兩個**片段,大部分情況我們用到的迴圈並不是很多,直觀的感受也不會特別深。下面的小**是我做的一組測試資料,當迴圈只有幾
十、幾百次的時候感受不深,都是一會兒就出來,沒達到人眼識別的臨界點。這裡測試的僅是數字、陣列的疊加,而實際情況中,當網路請求資料越來越大的時候,迴圈次數越容易達到臨界點,速度會越來越慢。上圖中當迴圈次數達到 10000 次的時候, **片段二只有 13 毫秒,幾乎可以忽略,但是**片段一的已經達到了 12400 毫秒,次數再大可能就會崩潰。造成它的原因是什麼呢?
首先需要分析一下什麼是資料渲染,對小程式 / native 有一定了解的一定知道 js bridge 以及檢視層和邏輯層(通俗點講就是我們經常說的那些資料)。這兩個層級其實是相互獨立的,作為中轉的 js bridge,想要把資料渲染到檢視層上,必要的工作就是對這些資料多次的序列化 / 反序列化,結合上面兩個判斷來看:
目的都是為了減少檢視層與資料層的互動以減少效能的消耗。
5、生命週期
頁面和元件的生命週期函式大家都比較熟悉,常見的如 onload 和 onshow ,頁面跳轉以及返回的時候用什麼方法?這裡就不做贅述。
6、時下常見功能剖析
接下來介紹下目前比較熱門的一些功能是如何實現的。
也許你在拼多多的小程式上只點了幾下,它就隔三岔五給你推送訊息,但是無可否認他們的這種運作模式下,使用量和流量的確上來了。小程式推送有兩個前提:獲取 formid id 以及有效期。formid id 是乙個表單在提交的時候所獲取的乙個單獨 id ,這個 id 的有效使用次數是一次,有效使用期間是七天,只有拿到這個 id 才能推送,推送的物件必須是產生這個 id 的使用者。常見的手段就是各種埋點,使用者授權進去小程式,在進行各種操作的時候(進列表、進詳情、回退等)都進行埋點,乙個步驟乙個埋點,獲取很多 formid id,當需要推送的時候,乙個乙個使用 formid id 。
7、第三方平台注意點
小程式第三方平台是在小程式開發的基礎上對使用者的小程式進行流程管理的概念,這邊列出了幾個比較重要的點可能需要大家關注一下。
△ 第三方平台流程案例
"無需開發經驗" 也能擁有小程式
沒有工作經驗找it 沒有專案經驗,也能找工作!
程式設計師在找第乙份工作的時候,往往會為 實際專案經驗 發愁。如果自己在實習期間,沒做什麼跟技術沾邊的事情,淨打雜了,那簡歷上 個人經歷 那一欄該怎麼寫?但就算同樣缺乏實際專案經驗,有些人還是如願以償地收到了offer,甚至進了一線大廠,你仔細看他們的成績單,也不一定年年得國家獎學金,但hr就是給人...
玩著也能學python 玩著也能學Python
內容推薦 縱觀科技領域裡為世界作出偉大貢獻的人,從夢想改變世界到真正改變世界,啟蒙的種子往往來自他們童年時 貪玩 且好奇的心,繼而用 程式設計 澆灌它茁壯成長。玩著學程式設計 系列叢書就是這樣一本站在未來看現在的啟蒙讀本,以精美可愛的插畫 完整的世界觀構建了一座腦洞大開的 未來城市 在那裡,你既是遊...
相聲也能SOA
而郭德剛就做到了這一點,我相信他應該也是會經常上網去找素材的,這一點在他的相聲中就可以找到答案。這樣做確實是高明,首先,作為乙個相聲演員可以從師傅哪兒學到的東西畢竟是有限的,而每天去到生活中去找那麼多可樂的包袱又不太現實,而拿來主義卻是最取巧兒的辦法。再次,由於包袱 於大眾,也必然可以在大眾中引起共...