服務端渲染與客戶端渲染的區別與應用場景


內容整理自多個論壇博客。

主要參考:https://www.jianshu.com/p/b8cfa496b7ec

https://www.jianshu.com/p/10b6074d772c

https://www.douban.com/note/722996691/

  客戶端渲染(CSR)VS服務端渲染(SSR)

  1.客戶端渲染和服務端渲染

  1.1 概念

  客戶端渲染:后端不提供完整的html頁面,而是提供一些api使得前端可以獲取json數據,然后前端拿到json數據之后再在前端進行html頁面拼接,然后展示在瀏覽器上。這種是客戶端渲染。這樣前端就可以專注UI的開發,后端專注邏輯開發。

  服務端渲染:在互聯網早期,前端頁面都是一些簡單的頁面,那么前端頁面都是后端將html拼接好,然后將它返回給前端完整的html文件。瀏覽器拿到這個html文件之后就可以直接顯示了,這就是我們所謂的服務器端渲染。

  1.2 兩者本質區別

  客戶端渲染和服務器端渲染的最重要的區別就是究竟是誰來完成html文件的完整拼接,如果是在服務器端完成的,然后返回給客戶端,就是服務器端渲染,而如果是前端做了更多的工作完成了html的拼接,則就是客戶端渲染。

  1.3 優缺點分析

  客戶端渲染的優點:網絡傳輸數據量小、減少了服務器壓力、前后端分離、局部刷新,無需每次請求完整頁面、交互好可實現各種效果。

  客戶端渲染的缺點:不利於SEO、爬蟲看不到完整的程序源碼、首屏渲染慢(渲染前需要下載一堆js和css等)。

  服務端渲染的優點:首屏渲染快、利於SEO、可以生成緩存片段,生成靜態化文件、節能(對比客戶端渲染的耗電)。

  服務端渲染的缺點:用戶體驗較差、不容易維護,通常前端改了部分html或者css,后端也需要修改。

  1.4 什么情況下使用服務端渲染

  我們知道,服務端渲染其實就是由瀏覽器做的一些事情,我們放到了服務端去做,那么對於掘金、簡書、CSDN、知乎等網站的搭建,這種在網上一搜搜出一堆東西的網站,SEO做的很好,應該多少都用到服務端渲染了吧?當然,做服務端渲染成本是高昂的。vue全家桶或者react全家桶,都是推薦通過服務端渲染來實現路由的。服務端渲染並非完全之策(服務器稀少而寶貴),關於首屏渲染體驗以及SEO的優化方案很多,在不使用服務端渲染這個操作下,我們最好的處理方式就是找尋替代優化方案。

擴展:事實上,很多網站是出於效益考慮才啟用服務端渲染,性能在其次。

 

  假設 A 網站頁面中有一個關鍵字叫“前端性能優化”,這個關鍵字是 JS 代碼跑過一遍后添加到 HTML 頁面中的。那么客戶端渲染模式下,我們在搜索引擎搜索這個關鍵字,是找不到 A 網站的——搜索引擎只會查找現成的內容,不會幫你跑 JS 代碼。A 網站的運營方見此情形,感到很頭大:搜索引擎搜不出來,用戶找不到我們,誰還會用我的網站呢?為了把“現成的內容”拿給搜索引擎看,A 網站不得不啟用服務端渲染。
  但性能在其次,不代表性能不重要。服務端渲染解決了一個非常關鍵的性能問題——首屏加載速度過慢。在客戶端渲染模式下,我們除了加載 HTML,還要等渲染所需的這部分 JS 加載完,之后還得把這部分 JS 在瀏覽器上再跑一遍。這一切都是發生在用戶點擊了我們的鏈接之后的事情,在這個過程結束之前,用戶始終見不到我們網頁的廬山真面目,也就是說用戶一直在等!相比之下,服務端渲染模式下,服務器給到客戶端的已經是一個直接可以拿來呈現給用戶的網頁,中間環節早在服務端就幫我們做掉了,用戶豈不“美滋滋”?
 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM