# 第185题 什么是服务器端渲染(SSR)?SSR 的原理是什么
服务器端渲染 (SSR) 是一种网页渲染技术,它在服务器端生成完整的 HTML 页面,然后将页面发送给浏览器。与客户端渲染 (CSR) 不同,SSR 在服务器端完成页面渲染,浏览器只需解析和显示 HTML 页面即可。
SSR 的工作原理:当用户请求一个页面时,服务器会执行以下步骤:
- 获取页面数据和模板。
- 使用数据和模板生成完整的 HTML 页面。
- 将 HTML 页面发送给浏览器。
- 浏览器解析和显示 HTML 页面。
SSR 的优势:
- 更快的首屏加载速度: 由于浏览器无需等待 JavaScript 下载和执行,SSR 可以提供更快的首屏加载速度。
- 更好的 SEO: 搜索引擎可以更容易抓取和索引 SSR 生成的页面,从而提高网站的 SEO 排名。
- 更易于访问: SSR 生成的页面无需 JavaScript 即可访问,这对于禁用 JavaScript 的用户或低带宽连接的用户来说非常有用。
流式渲染是指将 HTML 文档分块传输给客户端,客户端收到每一段内容时进行分批渲染。与一次性发送整个 HTML 文档相比,流式渲染可以更早地向用户展示内容,提升页面加载速度和用户体验。
流式渲染适用于各种需要快速展示内容的场景,例如:
- 大型电商网站的商品列表页面
- 社交媒体的动态消息流
- 实时数据更新的仪表盘
流式渲染可以通过多种技术实现,例如:
- HTTP/1.1 的分块传输编码
- WebSockets
# 第184题 假如有几十个请求,如何去控制并发
众所周知,浏览器发起的请求最大并发数量一般都是6~8个,这是因为浏览器会限制同一域名下的并发请求数量,以避免对服务器造成过大的压力
首先让我们来模拟大量请求的场景
const ids = new Array(100).fill('')
console.time()
for (let i = 0; i < ids.length; i++) {
console.log(i)
}
console.timeEnd()
@前端进阶之旅: 代码已经复制到剪贴板

一次性并发上百个请求,要是配置低一点,又或者带宽不够的服务器,直接宕机都有可能,所以我们前端这边是需要控制的并发数量去为服务器排忧解难
什么是队列?
先进先出就是队列,push一个的同时就会有一个被shift。我们看下面的动图可能就会更加的理解:

我们接下来的操作就是要模拟上图的队列行为
定义请求池主函数函数
export const handQueue = (
reqs // 请求数量
) => {}
@前端进阶之旅: 代码已经复制到剪贴板
接受一个参数reqs,它是一个数组,包含需要发送的请求。函数的主要目的是对这些请求进行队列管理,确保并发请求的数量不会超过设定的上限
定义dequeue函数
const dequeue = () => {
while (current < concurrency && queue.length) {
current++
const requestPromiseFactory = queue.shift() // 出列
requestPromiseFactory()
.then(() => {
// 成功的请求逻辑
})
.catch((error) => {
// 失败
console.