摘要:是一個輕量級加載器,通過合理地聲明資源任務(wù)依賴關(guān)系,以最高效形式執(zhí)行加載,提供強(qiáng)大的性能追蹤,持續(xù)優(yōu)化性能瓶頸。使用微核啟動器,快速啟動應(yīng)用,利用在加載執(zhí)行同時,展示交互發(fā)起鑒權(quán)初始數(shù)據(jù)請求等,最大化利用設(shè)備能力提高頁面渲染性能。
Loder是一個輕量級加載器,通過合理地聲明資源任務(wù)依賴關(guān)系,以最高效形式執(zhí)行Web加載,提供強(qiáng)大的性能追蹤,持續(xù)優(yōu)化性能瓶頸。
目前線性粗放式的Web資源加載模式,尤其在條件有限的移動端,很大程度限制了頁面加載體驗。費很大勁把腳本體積降下來,卻得到極其有限的性能收益。使用微核啟動器Loder,快速啟動應(yīng)用,利用在Bundle加載執(zhí)行同時,展示Loading交互、發(fā)起鑒權(quán)、初始數(shù)據(jù)請求等,最大化利用設(shè)備能力提高頁面渲染性能。
Loder具備以下特性:
Dead Simple API
聲明式依賴,極簡的資源任務(wù)管理
極致加載,所有資源任務(wù)都以最適合時刻加載
輕量體積(1.4kb Gziped), 極速啟動應(yīng)用
幾乎無需修改邏輯,簡單幾步即可加速應(yīng)用至極致!
應(yīng)用示例舉個栗子,應(yīng)用會在運行前先把所需腳本準(zhǔn)備妥當(dāng),之后會順序執(zhí)行鑒權(quán)、授權(quán)、獲取數(shù)據(jù)、渲染。大多數(shù)的Web都會通過類似的模式去加載渲染。流程大致如下:
看似一種很直觀的方式卻很粗放,性能優(yōu)化非常考驗我們對資源任務(wù)加載的業(yè)務(wù)邏輯、依賴、順序的理解,精細(xì)化運營這些過程,Web性能可以得到意想不到地提升。我們可以大致整理一下應(yīng)用的資源任務(wù)加載過程:
應(yīng)用啟動
依賴[ "首屏數(shù)據(jù)", "應(yīng)用鑒權(quán)", "應(yīng)用 Bundle 加載&執(zhí)行"]
啟動應(yīng)用
應(yīng)用鑒權(quán)
依賴[ "加載鑒權(quán) SDK", "獲得用戶 ID" ]
發(fā)起鑒權(quán)請求
首屏數(shù)據(jù)
依賴[ "請求客戶端 axios" ]
發(fā)起多個請求
可以看到,有一部分資源任務(wù)是可以正交進(jìn)行的,這就是我們充分利用瀏覽器特性提高性能的關(guān)鍵。但是,如此繁瑣的加載,維護(hù)起來并不容易。Loder提供極簡的API,通過聲明式注冊資源和任務(wù),即能以最優(yōu)形式進(jìn)行Web加載,以上述應(yīng)用啟動流程來舉例:
啟動應(yīng)用前鑒權(quán)// 資源注冊 —— 鑒權(quán)SDK loder.add("authSDK", loder.loadScript("http://sample.com/sdk.js")) // 任務(wù)注冊 —— 獲取用戶id loder.add( "userId", () => new Promise(resolve => { resolve("id") }) ) // 任務(wù)注冊 —— 鑒權(quán) loder.task( "auth", ["authSDK", "userId"], () => new Promise(resolve => { // do auth resolve("success") }) )加載首屏數(shù)據(jù)
// 資源注冊 —— 請求客戶端 loader.add("axios", () => import("axios")) // 資源注冊 —— 首屏數(shù)據(jù) loder.task( "fpData", ["axios"], () => new Promise(resolve => { const axios = loder.get("axios") return axios("http://sample.com/userData.json") }) )啟動應(yīng)用
// 資源注冊 —— JS Bundle loder.add("createAppFn", () => import("./createAppFn")) // 任務(wù)聲明 —— 應(yīng)用啟動 loder.task("bootstrap", ["auth", "fpData"]) // 一切就緒,執(zhí)行加載 loder.run("bootstrap", async () => { const create = await loder.echo("createAppFn") create("Awesome Time") })
通過非常的簡單聲明,Loder不僅僅將PageLoaded性能提升至極致,甚至可以利用首屏數(shù)據(jù)請求期間,去加載應(yīng)用所需的資源腳本,以及花費大量時間執(zhí)行的Bundle。
Loder vs SSR除了高效加載、極簡API、無業(yè)務(wù)入侵性外,Loder作為一個客戶端加載器,具備更多天然的優(yōu)勢:
特性方案 | Loder | SSR |
---|---|---|
Server 支持 | 不需要 | 需要維護(hù)額外 SSR 服務(wù)器 |
Server 壓力 | 低,正常使用 CDN 方案 | 高,每次請求需 Server 支持 |
Client | 無需改動業(yè)務(wù)邏輯 | client-ssr 兩套版本 |
通用性 | 任何支持 JS 瀏覽器 | 簡單頁面,如客戶端鑒權(quán)情況不支持 |
首屏渲染時間 | 快,無需浪費接口請求時間 | 極快,一次請求可獲取首屏內(nèi)容 |
頁面空白時間 | 快速啟動,極大減少空白時間 | 大數(shù)據(jù)查詢接口,空白時間較長 |
可交互時長 | 短,腳本加載完成即可交互 | 中,ssr 后依舊需要完全加載 bundle |
Loder作為一個Web極致性能加載器,驅(qū)動Web高效加載渲染,通過性能跟蹤輔助發(fā)現(xiàn)&優(yōu)化性能瓶頸,也促使我們?nèi)ニ伎既绾谓M織Web的加載時序。
LinksLanding page: http://loder-docs.scoii.com
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/107130.html
摘要:與此同時,谷歌聯(lián)合基金會及其他合作伙伴共同成立了基金會,并將作為首個編入管理體系的開源項目,助力容器技術(shù)生態(tài)的發(fā)展進(jìn)步。年月谷歌宣布開源。年月容器引擎啟動,谷歌宣布中支持容器及服務(wù),并以為構(gòu)架。 7月22日Google正式對外發(fā)布 Kubernetes v 1.0,意味著這個開源容器編排系統(tǒng)可以正式在生產(chǎn)環(huán)境使用。與此同時,谷歌聯(lián)合linux基金會及其他合作伙伴共同成立了CNCF基金會...
摘要:修改配置文件匹配的文件名,這里匹配后綴為的,只要了該文件名結(jié)尾的文件,都將使用這個來處理命中后使用的加載器查看結(jié)果,和之前一致,推薦使用配置文件形式,可以保持引入文件格式的一致性。有利于維護(hù)和美觀更多配置,可以查閱關(guān)于部分。 0x001 概述 上一章講的是DLL加速編譯,這一章開始講loader相關(guān)的部分,但是關(guān)于plugin的部分善未完結(jié),因為即將要講的ExtractTextWebp...
摘要:經(jīng)過三次全球公測,在穩(wěn)定性方面已達(dá)到主網(wǎng)上線標(biāo)準(zhǔn)。在此基礎(chǔ)上,研發(fā)團(tuán)隊將進(jìn)一步改進(jìn),在中加入一種恢復(fù)回退機(jī)制,能極大提升共識機(jī)制與主網(wǎng)的穩(wěn)定性。由此,在發(fā)生節(jié)點故障網(wǎng)絡(luò)故障或數(shù)據(jù)庫錯誤等極端情況時,主網(wǎng)都能夠快速恢復(fù)。 showImg(https://segmentfault.com/img/bVbtKHf); 項目進(jìn)展 Highlight:共識機(jī)制UPoS v1.5 穩(wěn)定性全面提升 ...
摘要:從再到目前當(dāng)紅明星,前端模塊打包技術(shù)日新月異,在今年月份和月份左右接連更新了和版本為了減少冗余模塊,縮減文件大小,中也加入了關(guān)于的特征,可以查看知乎如何評價新引入的代碼優(yōu)化技術(shù)的討論。 從Grunt->gulp->webpack,再到目前當(dāng)紅明星rollup,前端模塊打包技術(shù)日新月異,webpack在今年1月份和6月份左右接連更新了v2和v3版本,為了減少冗余模塊,縮減bundle文件...
閱讀 1115·2021-11-23 09:51
閱讀 2475·2021-10-08 10:22
閱讀 2793·2021-09-29 09:35
閱讀 996·2021-09-22 15:20
閱讀 2946·2019-08-30 15:53
閱讀 2507·2019-08-30 13:55
閱讀 1175·2019-08-29 17:27
閱讀 2983·2019-08-29 17:26