渲染篇一:服務(wù)端渲染(SSR)

導(dǎo)讀

本文主要是從三個(gè)方面學(xué)習(xí)服務(wù)端渲染摔蓝,內(nèi)容整理自多個(gè)博客愉耙。
  • 服務(wù)端渲染是什么?什么是服務(wù)端渲染朴沿?(服務(wù)端渲染的運(yùn)行機(jī)制)
  • 為什么使用服務(wù)端渲染?服務(wù)端渲染解決了什么問題?
  • 什么情況下使用服務(wù)端渲染园爷?(服務(wù)端渲染的應(yīng)用實(shí)例與使用場(chǎng)景)

一、概念

首先,說到服務(wù)端渲染我們要先對(duì)渲染這個(gè)概念有一個(gè)大概的了解

渲染:就是將數(shù)據(jù)和模版組裝成html


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

那么,為了更好的理解服務(wù)端渲染沧竟,我們也很有必要去了解一下客戶端渲染。將客戶端渲染與服務(wù)端渲染同時(shí)進(jìn)行學(xué)習(xí)理解屯仗。


1.客戶端渲染
1.1概念

解釋一:客戶端渲染模式下,服務(wù)端把渲染的靜態(tài)文件給到客戶端魁袜,客戶端拿到服務(wù)端發(fā)送過來的文件自己跑一遍js,根據(jù)JS運(yùn)行結(jié)果店量,生成相應(yīng)DOM,然后渲染給用戶融师。

解釋二:html 僅僅作為靜態(tài)文件,客戶端在請(qǐng)求時(shí)旱爆,服務(wù)端不做任何處理,直接以原文件的形式返回給客戶端客戶端怀伦,然后根據(jù) html 上的 JavaScript山林,生成 DOM 插入 html房待。

延伸:前端渲染的方式起源于JavaScript的興起驼抹,ajax的大熱更是讓前端渲染更加成熟,前端渲染真正意義上的實(shí)現(xiàn)了前后端分離框冀,前端只專注于UI的開發(fā),后端只專注于邏輯的開發(fā)明也,前后端交互只通過約定好的API來交互,后端提供json數(shù)據(jù)诡右,前端循環(huán)json生成DOM插入到頁面中去轻猖。

1.2.利弊

好處: 網(wǎng)絡(luò)傳輸數(shù)據(jù)量小、減少了服務(wù)器壓力咙边、前后端分離次员、局部刷新,無需每次請(qǐng)求完整頁面淑蔚、交互好可實(shí)現(xiàn)各種效果

壞處:不利于SEO、爬蟲看不到完整的程序源碼刹衫、首屏渲染慢(渲染前需要下載一堆js和css等)


2.服務(wù)端渲染
2.1.概念

解釋一:服務(wù)端在返回 html 之前搞挣,在特定的區(qū)域带迟,符號(hào)里用數(shù)據(jù)填充囱桨,再給客戶端,客戶端只負(fù)責(zé)解析 HTML 舍肠。

解釋二:服務(wù)端渲染的模式下,當(dāng)用戶第一次請(qǐng)求頁面時(shí)翠语,由服務(wù)器把需要的組件或頁面渲染成 HTML 字符串,然后把它返回給客戶端险毁。客戶端拿到手的畔况,是可以直接渲染然后呈現(xiàn)給用戶的 HTML 內(nèi)容,不需要為了生成 DOM 內(nèi)容自己再去跑一遍 JS 代碼跷跪。使用服務(wù)端渲染的網(wǎng)站,可以說是“所見即所得”吵瞻,頁面上呈現(xiàn)的內(nèi)容甘磨,我們?cè)?html 源文件里也能找到橡羞。

2.2.利弊

好處:首屏渲染快济舆、利于SEO、可以生成緩存片段滋觉,生成靜態(tài)化文件齐邦、節(jié)能(對(duì)比客戶端渲染的耗電)

壞處:用戶體驗(yàn)較差第租、不容易維護(hù)措拇,通常前端改了部分html或者css慎宾,后端也需要修改。

3.對(duì)比

其實(shí)前后端的渲染本質(zhì)是一樣的璧诵,都是字符串的拼接,將數(shù)據(jù)渲染進(jìn)一些固定格式的html代碼中形成最終的html展示在用戶頁面上之宿。 因?yàn)樽址钠唇颖厝粫?huì)損耗一些性能資源。
如果在服務(wù)器端渲染色难,那么消耗的就是server端的性能。
如果是在客戶端渲染枷莉,常見的手段尺迂,比如是直接生成DOM插入到html 中笤妙,或者是使用一些前端的模板引擎等噪裕。他們初次渲染的原理大多是將原h(huán)tml中的數(shù)據(jù)標(biāo)記(例如{{text}})替換。


二膳音、為什么使用服務(wù)端渲染,它解決的是什么問題

簡(jiǎn)單總結(jié)起來就是兩點(diǎn):

首屏加載快
相比于加載單頁應(yīng)用祭陷,我只需要加載當(dāng)前頁面的內(nèi)容,而不需要像 React 或者 Vue 一樣加載全部的 js 文件
SEO 優(yōu)化
對(duì)于單頁應(yīng)用醇蝴,搜索引擎并不能收錄到 ajax 爬取數(shù)據(jù)之后然后再動(dòng)態(tài) js 渲染出來的頁面想罕。

為了更便于理解哑蔫,下面幾段話摘自掘金小冊(cè):

事實(shí)上,很多網(wǎng)站是出于效益的考慮才啟用服務(wù)端渲染闸迷,性能倒是在其次俘枫。
假設(shè) A 網(wǎng)站頁面中有一個(gè)關(guān)鍵字叫“前端性能優(yōu)化”,這個(gè)關(guān)鍵字是 JS 代碼跑過一遍后添加到 HTML 頁面中的鸠蚪。那么客戶端渲染模式下,我們?cè)谒阉饕嫠阉鬟@個(gè)關(guān)鍵字茅信,是找不到 A 網(wǎng)站的——搜索引擎只會(huì)查找現(xiàn)成的內(nèi)容,不會(huì)幫你跑 JS 代碼妖谴。A 網(wǎng)站的運(yùn)營方見此情形,感到很頭大:搜索引擎搜不出來膝舅,用戶找不到我們窑多,誰還會(huì)用我的網(wǎng)站呢仍稀?為了把“現(xiàn)成的內(nèi)容”拿給搜索引擎看埂息,A 網(wǎng)站不得不啟用服務(wù)端渲染。
但性能在其次千康,不代表性能不重要。服務(wù)端渲染解決了一個(gè)非常關(guān)鍵的性能問題——首屏加載速度過慢琉闪。在客戶端渲染模式下,我們除了加載 HTML颠毙,還要等渲染所需的這部分 JS 加載完砂碉,之后還得把這部分 JS 在瀏覽器上再跑一遍蛀蜜。這一切都是發(fā)生在用戶點(diǎn)擊了我們的鏈接之后的事情增蹭,在這個(gè)過程結(jié)束之前,用戶始終見不到我們網(wǎng)頁的廬山真面目,也就是說用戶一直在等户誓!相比之下,服務(wù)端渲染模式下帝美,服務(wù)器給到客戶端的已經(jīng)是一個(gè)直接可以拿來呈現(xiàn)給用戶的網(wǎng)頁晤硕,中間環(huán)節(jié)早在服務(wù)端就幫我們做掉了悼潭,用戶豈不“美滋滋”舞箍?


三、 什么情況下使用服務(wù)端渲染疏橄?

通過服務(wù)端渲染的概念以及它的兩個(gè)特點(diǎn):首屏加載速度快SEO優(yōu)化刷喜。
我們知道,服務(wù)端渲染其實(shí)就是由瀏覽器做的一些事情掖疮,我們放到了服務(wù)端去做颗祝,那么對(duì)于掘金浊闪、簡(jiǎn)書螺戳、CSDN、知乎等網(wǎng)站的搭建倔幼,這種在網(wǎng)上一搜搜出一堆東西的網(wǎng)站,SEO做的很好损同,應(yīng)該多少都用到服務(wù)端渲染了吧?當(dāng)然茂卦,做服務(wù)端渲染成本是高昂的。
vue全家桶或者react全家桶等龙,都是推薦通過服務(wù)端渲染來實(shí)現(xiàn)路由的。
服務(wù)端渲染并非完全之策(服務(wù)器稀少而寶貴)蛛砰,關(guān)于首屏渲染體驗(yàn)以及SEO的優(yōu)化方案很多,在不使用服務(wù)端渲染這個(gè)操作下泥畅,我們最好的處理方式就是找尋替代優(yōu)化方案。

關(guān)于在server端還是在browser端渲染的選擇,更多的是要看業(yè)務(wù)場(chǎng)景望迎。


相關(guān)文章延伸閱讀

https://blog.csdn.net/b9q8e64lo6mm/article/details/79418969 (力薦)

更多內(nèi)容,請(qǐng)?jiān)L問的我的個(gè)人博客:https://liugezhou.github.io/blog.
您也可以關(guān)注我的個(gè)人公眾號(hào):【W(wǎng)akaka】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涛浙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轿亮,更是在濱河造成了極大的恐慌胸墙,老刑警劉巖我注,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迟隅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奔缠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門校哎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞳步,“玉大人,你說我怎么就攤上這事谚攒。” “怎么了馏臭?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵讼稚,是天一觀的道長绕沈。 經(jīng)常有香客問我,道長乍狐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任藕帜,我火速辦了婚禮,結(jié)果婚禮上洽故,老公的妹妹穿的比我還像新娘。我一直安慰自己时甚,他們只是感情好哈踱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著开镣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哑子。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天帐要,我揣著相機(jī)與錄音,去河邊找鬼榨惠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赠橙,可吹牛的內(nèi)容都是我干的愤炸。 我是一名探鬼主播期揪,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼规个,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼姓建!你這毒婦竟也來了缤苫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤活玲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舒憾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掸宛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年招拙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了措译。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片别凤。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡领虹,死狀恐怖规哪,靈堂內(nèi)的尸體忽然破棺而出塌衰,到底是詐尸還是另有隱情诉稍,我是刑警寧澤最疆,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站努酸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏获诈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一笼踩、第九天 我趴在偏房一處隱蔽的房頂上張望亡嫌。 院中可真熱鬧嚎于,春花似錦、人聲如沸匾旭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伪窖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間覆山,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工簇宽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吧享,地道東北人魏割。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓钢颂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親殊鞭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • https://juejin.im/entry/5b2c55c551882574dd4ad5bbhttps://s...
    丶君為紅顏酔閱讀 611評(píng)論 0 0
  • 前言 首先來講一下服務(wù)端渲染锯仪,直白的說就是在服務(wù)端拿數(shù)據(jù)進(jìn)行解析渲染趾盐,直接生成html片段返回給前端卵酪。具體用法也有...
    ITgecko閱讀 12,577評(píng)論 10 11
  • 這幾天服務(wù)端渲染在知乎上熱度又上來了溃卡,于是我又去翻看了一些相關(guān)資料。 服務(wù)端渲染是什么 我最開始接觸是在Vue的官...
    CJ_景元閱讀 4,448評(píng)論 0 2
  • 今天(5月2號(hào))是我入職第一天瘸羡,在簡(jiǎn)短的內(nèi)部培訓(xùn)了一上午后,前端leader讓我先了解下什么是vue的服務(wù)器端渲染...
    阿諾貝爾閱讀 2,952評(píng)論 2 6
  • 首先犹赖,服務(wù)端渲染是什么?所謂SSR其實(shí)就是將渲染好的并且?guī)в袛?shù)據(jù)的html頁面返回給前端(而不是返回一個(gè)空的htm...
    Egde閱讀 946評(píng)論 0 1