在使用 Serverless Framework 部署 Next.js,Egg.js 項目時,因爲安裝的依賴包過大,部署時壓縮上傳時間很長,可能出現上傳超時、控制檯卡死等問題。git
爲此,Serverless 團隊近期對部署作了一個性能優化,原來部署一個 Next.js 的 Demo 項目大約須要 55s 左右,而如今只須要 18s 的時間。github
下面咱們一塊兒看一下,優化先後部署方案哪些不一樣。express
本次提速主要作的是壓縮上傳性能的提高。優化後採用流式上傳壓縮,並直接在壓縮包內注入組件代碼,大大的提高了性能。選取三種不一樣大小的代碼包進行測試,優化先後平均部署性能以下所示:npm
代碼包大小(MB) | 優化前(秒) | 優化後(秒) |
---|---|---|
111 MB | 55 s | 18 s |
216 MB | 100 s | 38 s |
418 MB | 185 s | 70 s |
可見,部署的總體性能提高了將近 3倍!對於一個輕量級別的網站或博客( 200 MB 左右),每次部署只須要 35s 左右的時間!api
在 CLI 控制檯輸入 sls deploy
命令後,CLI 控制檯狀態的對比,以下圖所示:瀏覽器
優化前部署全流程僅有 deploying 狀態,直到部署結束返回結果。優化後將部署流程的每一步實時反饋到控制檯界面上,讓用戶更清晰的看到整個部署流程,也能方便定位問題(如本地網絡問題致使上傳失敗)。性能優化
本次部署性能的提高是否是讓小夥伴們已經激動不已了呢?bash
下面經過一個實例,咱們來一塊兒感覺下三倍速性能優化帶來的體驗!網絡
npm install -g serverless
npm init next-app serverless-next cd serverless-next
# 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
npm run build
sls deploy
部署成功,以下圖所示:架構
咱們誠邀您來體驗最便捷的 Serverless 開發和部署方式。在試用期內,相關聯的產品及服務均提供免費資源和專業的技術支持,幫助您的業務快速、便捷地實現 Serverless!
3 秒你能作什麼?喝一口水,看一封郵件,仍是 —— 部署一個完整的 Serverless 應用?
複製連接至 PC 瀏覽器訪問:https://serverless.cloud.tencent.com/deploy/express
3 秒極速部署,當即體驗史上最快的 Serverless HTTP 實戰開發!
傳送門:
- GitHub: github.com/serverless
- 官網:serverless.com
歡迎訪問:Serverless 中文網,您能夠在 最佳實踐 裏體驗更多關於 Serverless 應用的開發!