【Next】1. 初识服务端渲染

news2024/12/26 0:16:48

笔记来源:编程导航

1、什么是客户端和服务端渲染?

网站渲染可以在服务端和客户端两种环境下进行。

在客户端渲染(Client-Side Rendering,CSR)中,客户端(浏览器)会先向服务器请求 HTML 文件,服务器会返回一个基础的 HTML 文件,其中包含必要的 JavaScript 脚本。这些脚本在浏览器端运行,动态请求后端的数据、生成网页内容并渲染到页面上。

服务端渲染(Server-Side Rendering,SSR) 是一种将网页在 服务器端 生成并渲染为 HTML 内容的技术。在这种方式下,当用户请求一个网页时,服务器会提前调用后端,获取数据并生成完整的 HTML 文档,然后将其发送到客户端(浏览器)。浏览器接收到 HTML 后,直接展示页面内容,不用再动态地向后端发送请求来获取数据。

服务端渲染的工作流程通常如下:

  1. 用户发送请求到服务器
  2. 服务器处理请求,调用后端获取数据,并生成完整的 HTML 页面
  3. 服务器将生成的 HTML 页面返回给客户端(浏览器)
  4. 浏览器接收到 HTML 后,直接渲染页面

2、客户端和服务端渲染的区别?

客户端渲染和服务端渲染的主要区别在于渲染过程发生的地点。

由于 Ajax、Vue、React 等新技术的崛起,大多数网站都是基于客户端渲染实现的,客户端渲染的优点主要是:

  1. 开发方便灵活:开发者不需要区分哪些数据要在服务端加载、哪些数据要在客户端加载,也不用担心哪些 API 无法在服务端使用。便于实现更加复杂和动态的用户界面,适合构建单页应用(SPA)和需要频繁交互的应用。
  2. 减少服务器压力:由于渲染工作由客户端(用户自己的电脑)完成,因此服务器的负载相对较小,只需要提供静态资源(比如使用 Nginx 就能完成部署)。

比如一个网站的首页加载请求只有一个标题和一个 js 脚本。

随后执行脚本,触发后续的数据加载,逐渐加载显示整个页面。

而服务端渲染,服务端直接返回的就是 html 文档,就已经有完整的网站数据和样式了。

服务端渲染的好处是:

  1. 减少初始加载时间:SSR 页面可以在首次加载时展示完整内容,减少白屏时间,而 CSR 通常需要等待 JavaScript 加载和执行后才能展示内容。
  2. SEO 友好:SSR 更有利于 SEO,因为搜索引擎爬虫能够直接抓取完整页面的内容,而不依赖于 JavaScript 执行。

但相应的,SSR 将渲染任务交给服务器,可能会增加服务器的负载和压力。所以 SSR 更适合追求性能和 SEO 的企业级项目。

能够实现服务端渲染的技术很多,以前有 Java 的 JSP、PHP 等等,现在有基于 React 的 Next.js 和基于 Vue 的 Nuxt.js 框架。

3、其他渲染方式 - 静态网站生成

静态网站生成(Static Site Generation,SSG)是一种在构建阶段生成静态 HTML 文件的技术。与服务端渲染不同,静态网站生成是在构建时(而不是用户请求时)生成页面,所有页面都以静态文件的形式存在。

这种方式本质上也是客户端渲染,但是不需要由客户端再动态地向后端发送请求来获取数据,这些静态文件可以直接由内容分发网络(CDN)或静态服务器提供。

优点:

  1. 高性能:由于服务器仅需提供静态文件,性能极高;而且由于数据不变化,特别适合通过 CDN 缓存加速。
  2. SEO 友好:搜索引擎最喜欢的就是静态 HTML 文件,可以轻松索引并提升 SEO 效果。
  3. 简化基础设施:无需复杂的前后端交互逻辑,静态文件的部署和维护成本较低。

缺点:

  1. 动态内容有限:SSG 适合内容变化不频繁的场景,对于需要实时更新内容的网站,生成静态页面可能不够灵活。
  2. 构建时间:生成大量静态页面时,构建时间可能较长,特别是数据量大的时候。

基于这些优缺点,静态网站生成适合内容数量有限的、内容基本不变的网站,比如个人博客。像 VuePress、Hugo、Hexo、Astro 都是主流的静态网站生成器。

随着静态网站内容越来越多,每次构建会越来越慢,这种情况下,可以采用增量静态生成技术。

增量静态生成(Incremental Static Regeneration,ISR)允许部分页面在构建之后进行更新,而无需重新构建整个站点。这种技术适用于那些大多数内容不变、但某些部分需要动态更新的网站。

工作流程:

  1. 在构建阶段,生成初始的静态页面。
  2. 当页面内容更新时,通过配置的再生成间隔,静态页面可以增量更新,而不是重新生成整个站点,大幅减少构建时间。
  3. 用户请求时,如果页面内容过期或更新,则后台自动生成新的静态页面并缓存。

这样一来,可以在享受静态网站高性能、SEO 友好特性的同时,及时更新网站的内容,并减少构建时间。

不过缺点就是架构更复杂、维护成本更高。但值得一提的是,很多大型网站为了做 SEO 优化,专门把动态网站转为静态 HTML(静态化)。

4、结合使用(推荐)

实际情况下,前面讲到的几种方式可以结合使用。

比如 部分预渲染(Partial Prerendering,PPR)是一种将服务端渲染(或静态生成)与客户端渲染结合的技术。

工作流程:

  1. 在构建阶段或请求阶段,页面的静态部分预先渲染(如导航栏、页脚等)。
  2. 页面加载时,静态部分直接显示,动态部分由 JavaScript 在客户端加载并渲染。
  3. 通过水合(Hydration)过程,客户端的 JavaScript 接管已经渲染的静态内容,并继续处理动态交互。

这样一来,兼具了 SSR 的 SEO 友好和快速初始加载、以及 CSR 灵活动态交互的优点。

在这里插入图片描述

还有一个跟部分预渲染相似的概念叫 同构渲染 ,是指同一套代码可以在服务端和客户端运行,并在服务端渲染页面的初始内容,然后在客户端接管渲染和交互。

比如 Next 就可以实现同构渲染。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot实现前后端传输加密设计

在Web应用中,确保前后端之间的数据传输安全是非常重要的。这通常涉及到使用HTTPS协议、数据加密、令牌验证等安全措施。本文通过将前后端之间的传输数据进行加密,用于在Spring Boot应用中实现前后端传输加密设计。 一、数据加密方案 即使使用了HTTPS&…

金融企业业务中台应用架构设计

金融企业的业务基于价值链分解为渠道需求、产品需求、营销需求,运营需求、风险需求五大方面。业务中台内部可以划分为产品中台、渠道中台、营销中台和运营中台。 产品中台 负责金融产品研发全生命周期的流程,关注于创意评估、需求分析、方案设计、产品运营等产品研发流程,产…

深度学习(三)-反向传播

反向传播算法 深度学习三巨头发表反向传播论文 https://www.cs.toronto.edu/~hinton/absps/naturebp.pdf 正向传播网络 前一层的输出作为后一层的输入的逻辑结构,每一层神经元仅与下一层的神经元全连接,通过增加神经网络的层数虽然可为其提供更大的灵…

【论文】A Collaborative Transfer Learning Framework for Cross-domain Recommendation

Intro 业界常见的跨域建模方案主要分为两种范式[22][32][5][36][17][14][20]:1) 将源样本和目标样本进行联合和混合,然后执行多任务学习技术,以提高在所有域中的性能;2) 使用混合或数据丰富的源域数据预先训练模型,然…

时序优化的常见

本期求职笔试题目来源大疆硬件逻辑岗,共2道题,涉及知识点包含:时序约束中异步时钟的设置、典型时序优化方法。 33、根据约束关系set_clock_groups -async -group {CLK1CLK3}{CLK2},下图哪些路径会进行时序检查( )(多选…

三、电路知识笔记

三、电路知识 3.1 单位换算 1 英寸2.54 厘米25.4mm 1mil (即毫英寸)1/1000inch0.0254mm 普通杜邦线的间距为2.54mm即0.1英寸(inch) 3.2 贴片元件焊接 中温焊锡膏使用吹风枪焊接时,参考参数: 300度 风速4 (可焊接贴片…

CtfShow中的misc17解法

第一步: 首先拿随波逐流打开看看,没发现啥突破点,很正常 第二步:使用kali中的binwalk命令,解析出一个文件夹,打开压缩包后发现没什么东西 第三步:结合题目给的提示,使用tweakpng打开…

前端【CSDN创作优化3】CSDN自定义模块:解决保存CSDN自定义模块时显示fail

【CSDN创作优化3】CSDN自定义模块:解决保存CSDN自定义模块时显示fail 写在最前面遇到的问题:保存CSDN自定义模块时显示fail1.符号问题:删除所有符号2.超出字符长度限制:压缩保存3.li模块不见了:小窗口正常显示元素 &am…

你以为AI只能写代码?来看看最新的AI工具,一句话让AI直接生成一个应用程序!

AI写代码是目前大家熟知的能力,无论是告诉GPT、kimi、Claude还是通义千问他们都能迅速生成出长串的代码。 但是AI在软件工程领域的能力仅限于此吗? “我想开发一个小游戏,你可以帮我开发出来吗” 想必大家肯定在GPT或者是国内大模型上问过…

【Bug】Ubuntu22.04英伟达驱动安装失败,重启后服务器卡在进入系统/grub的页面

目录 报错内容1、安装英伟达驱动:Failed to initialize NVML: Driver/library version mismatch2、重启后卡在系统页面3、在解决完问题2后,尝试继续解决问题1,还是失败4、能ping通服务器但是无法ssh连接 解决方案1、重启后卡在系统页面&#…

全球1km分辨率人口分布栅格数据

我们在《全国省市县三级“七普”人口数据分享》一文中,为你分享过全国人口数据。 现在再为你分享全球1km分辨率人口分布栅格数据,你可以在文末查看该数据的领取方法。 全球1km分辨率人口分布 人口空间分布数据是在各项研究中经常使用的数据&#xff0…

UXR0134A Infiniium UXR 系列示波器:13 GHz,4 通道

新利通 UXR0134A Infiniium UXR系列示波器 ——13 GHz,4 通道—— 简述 UXR0134A 是 Infiniium UXR 系列实时示波器之一,拥有 13 GHz 带宽和 4 个通道。 功能特点 主要特点 ⚫13 GHz 带宽 ⚫4 个全带宽通道 ⚫10 位 ADC ⚫所有通道都提供 128 …

ArcGIS Pro 3.1下载分享

在使用了很长一段时间ArcGIS Pro 3.0之后,终于迎来了ArcGIS Pro 3.1的更新,这里为你分享一下ArcGIS Pro 3.1的安装步骤。 软件介绍 ArcGIS Pro 3.1 是由Esri发布的地理信息系统 (GIS) 软件的较新版本,作为 ArcGIS 桌面应用程序家族中的核心…

【13年12月CCF计算机软件能力认证】:出现次数最多的数、ISBN号码、最大的矩形、有趣的数、I‘m stuck!

题目概括出现次数最多的数暴力枚举,非常简单ISBN号码直接模拟,非常简单最大的矩形用到双指针(优化枚举),非常简单有趣的数用到了数学知识排列组合,有一定思维难度I’m stuck!我用到了两个dfs来解决&#xf…

JavaScript学习文档(12):什么是正则表达式、语法、元字符、修饰符

目录 一、正则表达式 1、什么是正则表达式 2、语法 3、元字符 (1)边界符 (2)量词 (3)字符类: (4)用户名验证案例 4、修饰符 (1)过滤敏感…

数据解读——基于《择偶偏好中的性别差异和社会阶层异质性——基于选择实验法的探索》

原始文章:《择偶偏好中的性别差异和社会阶层异质性——基于选择实验法的探索》 参考文章:条件Logistic回归模型 这是一篇关于研究不同性别,不同阶层(城乡户口;受教育程度)在择偶偏好上的差异的文章,择偶偏好包含以下6…

实际开发中git在IDEA中的使用

相信搜索这个的同学代码都已经拉取到本地了,并且已经在idea中打开了。 1.一般我们从远程colone下来的代码默认是在主分支下的,也就是说我们从远程的主分支拉取的代码并且在本地创建了一个主分支。 2.一般主分支是不允许修改的,所以我们可以基…

Guitar Pro v8.1最新图文安装教程

在音乐的世界里,GuitarPro 8无疑是一款让人眼前一亮的神器。它不仅为吉他爱好者提供了前所未有的便捷,更以其强大的功能和实用性,成为了音乐创作与学习不可或缺的工具。这篇文章将深度解析GuitarPro 8的独特之处,探讨它如何改变音…

测试:TestGRPCDiscovery

目录 测试:TestGRPCDiscovery 类定义 方法 async def asyncSetUp(self): async def asyncTearDown(self): async def test_discovery(self): 总结 这是一个关于算力共享中环形结构通讯机制的项目图的功能模型解释。以下是根据所给信息对项目功能的概述: 项目结构: 项…

使用deekpseek v2开发中国象棋游戏

使用AI可以完成简单程序(如:五子棋),甚至都不要调试即可以运行,但逻辑规则复杂的程序就需要反复的调整,修改运行BUG,优化运行性能。(如:中国象棋,支持提示目标…