在使用 Serverless Framework 部署 Next.js,Egg.js 專案時,由于安裝的依賴包過大,部署時壓縮上傳時間很長,可能出現上傳超時、控制臺卡死等問題,
為此,Serverless 團隊近期對部署做了一個性能優化,原來部署一個 Next.js 的 Demo 專案大約需要 55s 左右,而現在只需要 18s 的時間,
下面我們一起看一下,優化前后部署方案哪些不同,
一、部署性能對比
本次提速主要做的是壓縮上傳性能的提升,優化后采用流式上傳壓縮,并直接在壓縮包內注入組件代碼,大大的提升了性能,選取三種不同大小的代碼包進行測驗,優化前后平均部署性能如下所示:
| 代碼包大小(MB) | 優化前(秒) | 優化后(秒) |
|---|---|---|
| 111 MB | 55 s | 18 s |
| 216 MB | 100 s | 38 s |
| 418 MB | 185 s | 70 s |
可見,部署的整體性能提升了將近 3倍!對于一個輕量級別的網站或博客( 200 MB 左右),每次部署只需要 35s 左右的時間!
二、CLI 控制臺輸出對比
在 CLI 控制臺輸入 sls deploy 命令后,CLI 控制臺狀態的對比,如下圖所示:

優化前部署全流程僅有 deploying 狀態,直到部署結束回傳結果,優化后將部署流程的每一步實時反饋到控制臺界面上,讓用戶更清晰的看到整個部署流程,也能方便定位問題(如本地網路問題導致上傳失敗),
本次部署性能的提升是不是讓小伙伴們已經激動不已了呢?
下面通過一個實體,我們來一起感受下三倍速性能優化帶來的體驗!
體驗 Next.js 部署實戰
1. 安裝最新版本的 serverless
npm install -g serverless
2. 本地創建一個 Next.js 專案并初始化
npm init next-app serverless-next
cd serverless-next
3. 配置 serverless.yml
# serverless.yml
component: nextjs # (必填) 組件名稱,此處為nextjs
name: nextjsDemo # (必填) 實體名稱
org: orgDemo # (可選) 用于記錄組織資訊,默認值為您的騰訊云賬戶 appid
app: appDemo # (可選) 該 next.js 應用名稱
stage: dev # (可選) 用于區分環境資訊,默認值是 dev
inputs:
src:
src: ./
exclude:
- .env
functionName: nextjsDemo
region: ap-guangzhou
runtime: Nodejs10.15
apigatewayConf:
protocols:
- http
- https
environment: release
4. 進入專案目錄,構建靜態資源
npm run build
5. 部署到云端
sls deploy
部署成功,如下圖所示:

Serverless Framework 30 天試用計劃
我們誠邀您來體驗最便捷的 Serverless 開發和部署方式,在試用期內,相關聯的產品及服務均提供免費資源和專業的技術支持,幫助您的業務快速、便捷地實作 Serverless!
詳情可查閱:Serverless Framework 試用計劃
One More Thing
3 秒你能做什么?喝一口水,看一封郵件,還是 —— 部署一個完整的 Serverless 應用?
復制鏈接至 PC 瀏覽器訪問:https://serverless.cloud.tencent.com/deploy/express
3 秒極速部署,立即體驗史上最快的 Serverless HTTP 實戰開發!
傳送門:
- GitHub: github.com/serverless
- 官網:serverless.com
歡迎訪問:Serverless 中文網,您可以在 最佳實踐 里體驗更多關于 Serverless 應用的開發!
推薦閱讀:《Serverless 架構:從原理、設計到專案實戰》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/5332.html
標籤:其他
