PRNext 中的按需编译和持久缓存

一个项目可能有数百条路线,而您只处理一条路线。 PRNext 0.1.17 利用该差异来减少在未开放路线上花费的时间,并重用输入未更改的工作。

有用的问题不是缓存是否可以快速返回文件。这是该文件是否仍然代表当前应用程序。开发管道围绕每个捷径保留依赖跟踪、生成身份和保守的后备路径。

从您实际开通的路线开始

请求路由编译包括浏览器所需的路由及其共享布局、错误和依赖基础设施。打开的选项卡保持其路线处于活动状态;有界非活动集可以避免无限期保留整个项目。

中间件、重写以及并行或拦截路由可能会使依赖关系图变得更难以预测。在这些情况下,PRNext 保持完整的编译,而不是猜测哪条路线可以安全地跳过。

例如,更改共享标头应该刷新导入它的打开页面,而不相关的选项卡则保留其当前模型。浏览器计数器和文档标记提供比返回 200 的请求更强大的检查:它们显示更新是否保留了已经正在进行的交互。

重新启动时重用转换

开发转换与生产构建输入分开存储。重用转换需要相关源和策略匹配;优化不能仅依赖于文件名保持不变。

持久缓存是可选的节省工作的基础设施。不可用或无效的条目将回退到编译。它不是动态应用程序响应的缓存。

开发和生产具有不同的生命周期,因此它们的可重用工作是分开的。重新启动可以重用有效的转换,而无需重用正在运行的应用程序进程或经过身份验证的响应。对配置或编译策略的更改仍然必须使它们影响的工作无效。

将样式表编辑视为样式表编辑

当受支持的编辑仅更改 CSS 时,PRNext 会发布不可变的样式表资源,而无需重建 JavaScript 图表或重新启动应用程序工作线程。浏览器可以保留其文档和 React 状态。

CSS 模块导出的更改可能会影响 JavaScript 导入。 Sass 和自定义处理器也可以具有更广泛的依赖性。这些情况会回退到完整的编译器,而不是发布不完整的更新。

不可变的世代还为编辑提供了独特的资产标识。已经使用上一代的选项卡可以完成加载其文件,而不是看到它们的内容在请求下发生变化。优化减少了工作量,同时保持构建与其资产之间的关系明确。

保持简单的后备

安全开发模式通过使用新的编译器编译完整的路线图来调查增量构建问题。它禁用持久转换重用,并且不会预热工作线程,同时保持兼容的快速刷新行为。

使用它可以将相同的编辑与更简单的编译路径进行比较。在安全模式下消失的问题可以让您集中重现以进行报告;它本身并不能识别错误的优化。使用该报告保留源更改、受影响的路由和构建诊断。

高 Next.js 内存使用率:如何诊断

如何对 React SSR 性能进行基准测试

在 Next.js 项目中安装 PRNext:快速入门

返回博客