Open
Description
一、常用方案
- SSR服务器渲染
- Nuxt静态化
- 预渲染
prerender-spa-plugin
PS: 用户请求前的服务器渲染即为预渲染。用户请求后的服务器渲染即为服务端渲染。
二、SSR服务器渲染
优势:
- 更好的SEO,因为搜索引擎爬虫抓取工具可以直接查看完全渲染的页面;
- 更快的内容到达时间(time-to-content),特别是对于缓慢的网络情况或运行缓慢的设备。
不足:
- 一套代码两套执行环境,会引起各种问题,比如服务端没有window、document对象,处理方式是增加判断,如果是客户端才执行;
- 涉及构建设置和部署的更多要求,需要处于node server的运行环境
- 高流量的情况下,需要准备相应的服务器负载,并明智地采用缓存策略。
三、Nuxt静态化
Nuxt.js框架,官方是这样介绍的:
从头搭建一个服务端渲染的应用是相当复杂的。幸运的是,我们有一个优秀的社区项目Nuxt.js这让一切变得非常简单。Nuxt是一个基于Vue生态的更高层的框架,为开发服务端渲染的Vue应用提供了极其便利的开发体验。更酷的是,你甚至可以用它来做为静态站生成器。
静态化是Nuxt.js打包的另一种方式,算是Nuxt.js的一个创新点,页面加载速度很快。
注意: 在Nuxt.js执行 generate静态化打包时,动态路由会被忽略。
优势:
- 纯静态文件,访问速度超快
- 对比SSR,不涉及到服务器负载方面问题;
- 静态网页不宜遭到黑客攻击,安全性更高。
不足:
- 如果动态路由参数多都化不适用。
四、预渲染 prerender-spa-plugin
不适合预渲染情况
-
个性化内容:对于路由是 /my-profile 的页面来说,预渲染就失效了。因为页面内容依据看它的人而显得不同;
-
经常变化的内容:如果你预渲染一个游戏排行榜,这个排行榜会随着新的玩家记录而更新,预渲染会让你的页面显示不正确直到脚本加载完成并替换成新的数据。这是一个不好的用户体验;
-
成千上万的路由:不建议预渲染非常多的路由,因为这会严重拖慢你的构建进程。
优势:
- 改动过小,引入插件配置即可
不足:
- 无法使用动态路由
- 只使用少量页面的项目,页面多达几百个的情况下,打包会非常慢