从缓存位置上来说分为四种,并且各自有优先级,当依次查找缓存且都没有命中的时候,才会去请求网络。首先是发送请求的时候。这里所说的请求,不仅仅是 *HTTP* 请求,也包括服务器向数据库发起查询数据的请求。其次是大量计算的时候。一般涉及到大量计算,主要是在服务器端和数据库端,服务器端要进行计算这个很好理解,数据库要根据服务器发送过来的查询命令查询到对应的数据,这也是比较耗时的一项工作。
浏览器,作为用户浏览网页最基本的一个入口,我们似乎认为在地址栏输入 *URL* 后网页自动就出来了。殊不知在用户输入网页地址,敲下回车的那一刻,浏览器背后做了诸多的事情。网络线程和服务器之间通信的过程并非本节课咱们要讨论的,本节课咱们要研究的主要内容,是浏览器的渲染进程如何将一个密密麻麻的 *html* 字符串渲染成最终页面的。
useCallback 和 useMemo 的区别是什么?在组件更新阶段,首先拿到之前的 hook 对象,从之前的 hook 对象的 memoizedState 上面拿到之前的依赖项,和新传入的依赖项做一个对比,如果相同,则返回之前缓存的 callback,否则就重新缓存,返回新的 callback
Hook是如何保存函数组件状态的?为什么不能在循环,条件或嵌套函数中调用 Hook ?- HoosDispatcherOnUpdate:函数组件进行更新的时候,会执行该对象所对应的方法。此时 Fiber 上面已经存储了函数组件的相关信息,这些 Hook 需要做的就是去获取或者更新维护这些 FIber 的信息
简述一下 React 中的事件是如何处理的?React 事件系统需要考虑到很多边界情况,因此代码量是非常大的,我们这里通过书写一个简易版的事件系统来学习 React 事件系统的原理。这个是对浏览器原生事件对象的一层封装,兼容了主流的浏览器
React 中的 diff 算法有没有了解过?具体的流程是怎么样的?React 为什么不采用 Vue 的双端对比算法?diff 算法本身是有性能上面的消耗,在 React 文档中有提到,即便采用最前沿的算法,如果要完整的对比两棵树,那么算法的复杂度都会达到 O(n^3),n 代表的是元素的数量,如果 n 为 1000,要执行的计算量会达到十亿量级的级别。
谈一谈你对 React 中 Fiber 的理解以及什么是 Fiber 双缓冲?在 React v16 之前,使用的是 Stack Reconciler,因此那个时候的 React 架构被称之为 Stack 架构。从 React v16 开始,重构了整个架构,引入了 Fiber,因此新的架构也被称之为 Fiber 架构,Stack Reconciler 也变成了 Fiber Reconciler。各个 FiberNode 之间通过链表的形式串联起来:
是否了解过 React 的整体渲染流程?里面主要有哪些阶段?注意上面 render 阶段的工作是在内存里面进行的,不会更新宿主环境 UI,因此这个阶段即使工作流程反复被中断,用户也不会看到“更新不完整的UI”。当 Scheduler 调度完成后,将任务交给 Reconciler,Reconciler 就需要计算出新的 UI,最后就由 Renderer **同步**进行渲染更新操作。
是否了解过 React 的架构?新的 Fiber 架构相较于之前的 Stack 架构有什么优势?Stack 架构在进行虚拟 DOM 树比较的时候,采用的是递归,计算会消耗大量的时间,新的 Fiber 架构采用的是链表,可以实现时间切片,防止 JS 的计算占用过多的时间从而导致浏览器出现丢帧的现象。
虚拟 DOM 是一种思想,JS 对象是一种思想的具体实现。虚拟 DOM 最早是由 React 团队提出来的,因此 React 团队在对虚拟 DOM 的定义上面有绝对的话语权。也就是说,只要我们有一种方式,能够将真实 DOM 的层次结构描述出来,那么这就是一个虚拟 DOM。
Next.js内置了多种缓存机制来提升应用性能、减少服务器负载并优化用户体验。这些机制主要包括 Request Memoization(请求记忆化)、Data Cache(数据缓存)、Full Route Cache(完整路由缓存)和 Router Cache(路由器缓存)。
Next.js 16 中的 Cache Components 是 16 版引入的最重要的新缓存机制之一
Next.js 是一个基于 React 的全栈 Web 开发框架,它支持多种渲染模式,其中 Server-Side Rendering(SSR,服务器端渲染)是一种核心功能。SSR 允许在服务器上动态生成 HTML 页面,并在每个请求时发送给客户端,从而实现动态内容渲染、更好的 SEO和初始加载性能。Next.js 根据路由器类型(Pages Router 和 App Router)对 SSR 的实现有所不同。下面我将详细介绍 SSR 的概念、实现方式、优缺点、与其他渲染模式的比较、代码示例以及最佳实践。内容基于 `Next.js` 最新版本(截至 2026 年初,版本 16.1.2)的官方文档。
Next.js 通过缓存渲染工作和数据请求来提高应用程序的性能并降低成本。本页面深入介绍了 Next.js 的缓存机制、可用于配置它们的 API,以及它们之间如何相互作用。
Windows 终端结合 git bash 配置 oh-my-zshWindows 上直接用自带的 cmd 或者 PowerShell,奇丑无比,所以我要改进优化。上网搜索了一下感觉用虚拟机实现 zsh 很麻烦,用 **Git 自带的 Bash** 很简单。下面我用 **Windows Terminal + git-bash + zsh + oh-my-zsh** 组合进行优化终端。
介绍了什么是SSG,SSG应该怎样用,有什么优势和缺点。输出结果:每个页面对应一个 .html 文件(或 /page/index.html 结构),以及必要的 JS/CSS 资源。用户访问页面时,直接从静态服务器(如 Vercel 或 Netlify)获取预生成的 HTML。
部署在 vercel 上,服务器在国外,有 wall 才可以访问,使用域名进行解析后,可以正常访问,本文介绍了怎样配置域名。