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