為什么 90 年代的網(wǎng)站比今天的 React 應(yīng)用加載得更快
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
還記得撥號上網(wǎng)那清脆的一按,接著是嘶嘶作響的調(diào)制解調(diào)器嗎?一旦連上,網(wǎng)頁幾乎“嗖”地一下就出來了——不是云養(yǎng)電子寵物的熱梗,就是某個個人主頁里跳個不停的倉鼠 GIF。 時間快進到今天:家里光纖拉滿,結(jié)果一個“很簡單”的 React 頁面還得等 3 秒+ 。 這是怎么肥四? 冷冰冰的數(shù)字事實可能會讓你一驚:90 年代典型網(wǎng)站 2–5 KB 就能打包完事,比你今天隨手發(fā)的任意一張高質(zhì)量照片都小得多。 對比下今天的 React:框架本體(壓縮后)就差不多 30 KB 起步,后面還有你的業(yè)務(wù)代碼、樣式、圖片,以及那一堆“離不開”的 npm 依賴。 最近審了個“極簡”待辦(todo)應(yīng)用,整包 847 KB。做個參照:初代 DOOM 的安裝包 2.39 MB——那可是一整套 3D 射擊游戲(認(rèn)真)。 90 年代的配方:簡單到“暴力”當(dāng)年的建站流程清清楚楚:
沒有構(gòu)建、沒有打包、沒有轉(zhuǎn)譯,也更沒有虛擬 DOM。瀏覽器拿到你的 HTML,自上而下邊讀邊畫。體積幾乎是一切性能問題的核心,大家都明白。 一份典型請求長這樣:
現(xiàn)代 React 應(yīng)用:完全不同的物種來看看現(xiàn)在常見的加載序列:
默認(rèn)情況下,大體量 JavaScript 的解析與執(zhí)行會阻塞渲染。當(dāng)瀏覽器忙著下載并跑完近 1.5 MB 的腳本時,用戶看到的通常只有空白或轉(zhuǎn)圈。 不過話說回來,這些 JS 可不只是“擺設(shè)”。它們在瀏覽器里搭起了一整套運行時:狀態(tài)管理、虛擬 DOM diff、事件系統(tǒng)、路由、甚至實時數(shù)據(jù)同步。 真正的瓶頸:下載之后發(fā)生了什么體積只是第一關(guān),更致命的是執(zhí)行階段。 90 年代的網(wǎng)站不需要客戶端運算:HTML 早就“畫好了”?,F(xiàn)代 React 應(yīng)用卻要:
某次分析里,React 首屏渲染本身僅 ~50ms,但等待服務(wù)器用了 ~560ms;再加上 JS 的解析/執(zhí)行,在移動端輕松再添 200–500ms。 可我們?yōu)槭裁催€要這么做?別急著把
讓你用 90 年代的技術(shù)去造 Slack、Figma、Google Docs/Sheets?基本不可能。用戶期待與功能需求已經(jīng)完全變了。 性能的“代價與收益”1 秒內(nèi)加載完成的站點,轉(zhuǎn)化率往往是 5 秒站點的 3 倍。這讓現(xiàn)代開發(fā)陷入一對矛盾:
于是衍生出一整套性能工程:
諷刺的是:我們用越來越復(fù)雜的構(gòu)建鏈路與優(yōu)化手段,努力在保住現(xiàn)代能力的同時,找回當(dāng)年那點簡單 + 快。 什么時候“簡單”仍是王道很多場景里,90 年代思路仍然無敵:
一句話:最快的 React,也敵不過一份寫得講究的純靜態(tài) HTML 的首次加載。物理定律依然是物理定律。 甜蜜地帶:現(xiàn)代工具,經(jīng)典準(zhǔn)則最快的現(xiàn)代網(wǎng)站,幾乎都在復(fù)刻 90 年代的性能原則:
Next.js / Gatsby / SvelteKit 等工具,正努力在“開發(fā)體驗像 React”與“性能像 90s”之間,找到平衡。 結(jié)論90 年代網(wǎng)站更快,不是它們“更高級”,而是目標(biāo)不同、規(guī)則不同:把內(nèi)容盡快送到用戶眼前,是那個時代的頭號追求。 現(xiàn)代 React 應(yīng)用追求的是可維護性、交互體驗、復(fù)雜功能。是的,性能要付出代價,但收益也是真實的。 關(guān)鍵在于用對地方: 給“關(guān)于我們”做個靜態(tài)頁還上 React,就像開著法拉利去取快遞——能到,但包袱太重。 真正的啟示不是“回到 90 年代”,而是克制地使用強力工具:在該簡單時保持簡單。 很多時候,最容易的答案,恰恰是最好的答案。 該文章在 2025/9/22 11:09:26 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |