什么是服務器端渲染
- 前端渲染:html頁面作為靜態文件存在,前端請求時后端不對該文件做任何內容上的修改,直接以資源的方式返回給前端,前端拿到頁面后,根據寫在html頁面上的js代碼,對該html的內容進行修改。
- 服務端渲染:前端發出請求后,后端在將HTML頁面返回給前端之前,先把HTML頁面中的特定區域,用數據填充好,再將完整的HTML返回給前端。在SPA場景下,服務端渲染都是針對第一次get請求,它會完整的html給瀏覽器,瀏覽器直接渲染出首屏,用不着瀏覽器端多一個AJAX請求去獲取數據再渲染。
為什么使用服務器端渲染
優點:
- 更好的 SEO,因為傳統的搜索引擎只會從 HTML 中抓取數據,這會導致前端渲染的頁面無法被抓取。
- 更快的內容到達時間(time-to-content),特別是對於緩慢的網絡情況或運行緩慢的設備 。頁面首屏時間大概有80%消耗在網絡上,剩下的時間在后端讀取數據以及瀏覽器渲染,顯然要優化后面的20%是比較困難的,優化網絡時間是效果最明顯的手段。傳統的Ajax請求是先請求js再由js發起數據請求,兩項時間再加上瀏覽器渲染時間才是首屏時間。而SSR能將兩個請求合並為一個。
缺點:
- 更多的服務器端負載。
- 服務器端和瀏覽器環境差異帶來的問題,例如document等對象找不到的問題。
如何選擇
建議:如果注重SEO的新聞站點,非強交互的頁面,建議用SSR;像后台管理頁面這類強交互的應用,建議使用前端渲染。
nuxt工作原理:
下圖可以解釋為6個步驟:
1.接收到客戶端的一個請求
2.生成了nuxt服務器
3.走了一個中間件
4.驗證、校驗
5.異步數據的獲取
6.render渲染生成頁面