换个角度想
SSR 像外卖送来的成品菜,到手就能吃;客户端渲染像送来一箱食材加菜谱,得自己下厨才有得吃。菜是同一道,差别在于在哪儿做。
术语 · 前端
SSR
在服务器上先把页面拼装成 HTML 再发给浏览器,第一眼就能看到内容。
同一个页面,两种拼法
数据已查好
模板已填充
HTML已拼装
SSR 像外卖送来的成品菜,到手就能吃;客户端渲染像送来一箱食材加菜谱,得自己下厨才有得吃。菜是同一道,差别在于在哪儿做。
GET /blog
请求到达服务器
数据已查好
模板已填充
HTML已拼装
页面可见 ✓
交互部分 → 交给水合浏览器请求页面
博客、文档、商品页:以内容为主的页面首选服务端渲染。
搜索引擎抓到的是拼好的 HTML,收录更可靠。
网络差的设备上,直出的 HTML 比等 JS 拼页面快得多。
同一个页面,CSR 版用户先盯两秒白屏,SSR 版立刻见到内容。省下的工作去哪了?
没有消失,是搬家了:拼页面的活从用户的浏览器搬到了服务器。用户少等,代价是服务器每次请求都要干活——所以纯静态内容常再进一步,构建时就提前拼好(SSG)。
SSR 不是万能药:每个请求都消耗服务器算力,页面「可见但未水合」时依然点不动。内容型页面收益最大,重交互的应用要权衡。