【Nuxt】服务端渲染 SSR

SSR 概述

服务器端渲染全称是:Server Side Render,在服务器端渲染页面,并将渲染好HTML返回给浏览器呈现。

SSR应用的页面是在服务端渲染的,用户每请求一个SSR页面都会先在服务端进行渲染,然后将渲染好的页面,返回给浏览器呈现。

构建SSR应用常见的库和框架有:Vue Nuxt, React Next.js等,SSR应用也称同构应用。

Nuxt:

优缺点

■SSR的优点

  • 更快的首屏渲染速度
    √浏览器显示静态页面的内容要比JavaScript动态生成的内容快得多。
    √当用户访问首页时可立即返回静态页面内容,而不需要等待浏览器先加载完整个应用程序。
  • 更好的SEO
    √爬虫是最擅长爬取静态的HTML页面,服务器端直接返回一个静态的HTML给浏览器。
    √这样有利于爬虫快速抓取网页内容,并编入索引,有利于SEO。
  • SSR应用程序在Hydration之后依然可以保留Web应用程序的交互性。比如:前端路由、响应式数据、虚拟DOM等。

■SSR的缺点

  • SSR通常需要对服务器进行更多API调用,以及在服务器端渲染需要消耗更多的服务器资源,成本高。
  • 增加了一定的开发成本,用户需要关心哪些代码是运行在服务器端,哪些代码是运行在浏览器端。
  • SSR配置站点的缓存通常会比SPA站点要复杂一点。

跨请求状态污染

  • 在SPA中,整个生命周期中只有一个App对象实例或一个Router对象实例或一个Store对象实例都是可以的,因为每个用户在使用浏览器访问SPA应用时,应用模块都会重新初始化,这也是一种单例模式。
  • 然而,在SSR环境下,App应用模块通常只在服务器启动时初始化一次。同一个应用模块会在多个服务器请求之间被复用,而我们的单例状态对象也一样,也会在多个请求之间被复用,比如:
    • 当某个用户对共享的单例状态进行修改,那么这个状态可能会意外地泄露给另一个在请求的用户。
    • 我们把这种情况称为:跨请求状态污染。
  • 为了避免这种跨请求状态污染,SSR的解决方案是:
    • 可以在每个请求中为整个应用创建一个全新的实例,包括后面的router和全局store等实例:
    • 所以我们在创建App或路由或Stor对象时都是使用一个函数来创建,保证每个请求都会创建一个全新的实例。
    • 这样的缺点就是需要消耗更多的服务器资源
相关推荐
小曲曲几秒前
接口上传视频和oss直传视频到阿里云组件
javascript·阿里云·音视频
学不会•1 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
EasyNTS2 小时前
H.264/H.265播放器EasyPlayer.js视频流媒体播放器关于websocket1006的异常断连
javascript·h.265·h.264
Theodore_10222 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
活宝小娜4 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点4 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow4 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o4 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
----云烟----4 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024064 小时前
SQL SELECT 语句:基础与进阶应用
开发语言