Node.js 中的缓存 (Caching)2025 年 5 月 1 日 | 阅读 5 分钟 引言通过将经常使用的数据保留在内存或其他存储系统中,Node.js 中的缓存对于提高在线应用程序的效率和可扩展性至关重要。这包括渲染 HTML 页面、数据库搜索、API 调用响应以及其他计算密集型操作。这些数据可以被缓存起来,以便在后续调用相同信息时加快速度,从而减少不必要的计算或数据库查询。 Node.js 提供了多种缓存实现技术,每种技术都针对特定的用例和性能要求。内存缓存是一种流行的技术,数据在 Node.js 进程中保留在内存中。 通常使用 JavaScript 对象等数据结构或 node-cache 或 memory-cache 等特定缓存库来实现。对于小到中型数据集,这些数据经常被访问,并且不需要在程序重新启动时持久化,内存缓存是一个很好的选择。 ![]() 另一种策略是使用外部缓存解决方案,如 Redis 或 Memcached。这些是免费的、内存中的键值存储,可以被多个 Node.js 进程以及独立的服务器访问。通过将处理外包给 Redis 或 Memcached 等专用服务,应用程序可以获得集中的缓存管理、数据持久性和可扩展性。 缓存可以在应用程序堆栈的多个级别上使用,包括:
安装 Node.js 缓存我们可以使用此命令安装 node-cache 示例让我们看一个 Node.js 中缓存的示例。 输出 Data retrieved from database { key: 'value' } Data retrieved from cache { key: 'value' } Data retrieved from database { key: 'value' } 说明随附的 Node.js 代码演示了使用 NodeCache 模块缓存数据的基本方法。缓存是一种广泛用于提高速度的方法,通过将经常请求的数据保留在内存中,从而无需从数据库等源头不断地检索信息。 该代码的核心是 NodeCache 模块,它提供了一个简单的内存缓存解决方案。它使用 Const myCache = new NodeCache() 初始化,这会创建一个名为 myCache 的缓存实例来存储键值对。 为了模拟从数据库检索数据,该程序构建了一个名为 fetchDataFromDatabase 的方法。此函数通过返回一个 Promise 来模拟从数据库获取数据所需的时间,该 Promise 在等待 2 秒后以模拟数据对象解析。 getData 函数处理从数据库或缓存检索数据的核心逻辑。它首先使用 myCache.get("data") 检查所需数据是否在缓存中。如果数据在缓存中(cachedData 为真),则从缓存中检索数据并通过控制台报告已从缓存中检索到数据的消息。 如果数据不在缓存中(称为缓存未命中),则函数会记录一条消息,说明数据将从数据库中检索。然后,它通过等待 fetchDataFromDatabase() 的结果来模拟异步从数据库检索数据。检索到数据后,使用 myCache.set("data", newData, 10) 缓存数据,并设置 10 秒的缓存过期时间。然后将检索到的数据提供给调用者。 结论总之,缓存可以显著提高 Node.js 应用程序的性能并减轻数据库等外部资源的负担。通过将经常使用的数据保留在内存中,缓存可以加快响应和检索时间,从而提高整体用户体验。 在示例中,NodeCache 模块通过提供内存数据存储解决方案,简化了键值对数据的存储和检索。开发人员可以通过减少从数据库等较慢的数据源不断检索数据的需要,从而提高应用程序的效率。 然而,在数据新鲜度和缓存之间找到平衡至关重要。如果缓存的数据未及时刷新,它可能会过时,用户可能会看到过时信息。必须仔细考虑缓存失效技术和过期时间,以确保数据准确且最新。 此外,Node.js 应用程序的速度优化不仅仅是缓存。为了获得最佳性能,还应考虑其他策略,包括限制网络请求、优化数据库查询和使用高效算法。 Node.js 中的缓存是增强应用程序可扩展性和性能的宝贵工具,使开发人员能够在有效利用系统资源的同时,为用户提供更快、更具响应性的体验。 |
域名系统 (DNS) 是互联网设置中的关键组件,因为它充当万维网的目录。它将人类可读的域名转换为 IP 地址,例如 example.com。它将域名(例如 www.javatpoint.com)转换为数字……
阅读 4 分钟
将 FFmpeg 的功能与 Node.js 相结合,以处理各种多媒体活动的音频和视频,可以轻松地自动化*.difficult*过程。本文将引导我们完成在 Node.js 环境中安装和操作 FFmpeg 所需的*.procedures*。什么是 FFmpeg?它是一个*.comprehensive*跨平台解决方案……
7 分钟阅读
Node.js 中最重要的位置,使其在模块方面高效且注重性能的是 module.enableCompileCache([cacheDir]),因为它支持编译后的 JavaScript 模块的缓存。通常,缓存机制对于高度依赖模块化代码结构的应用程序至关重要,因为它们明显地减少了开销...
阅读 4 分钟
在本文中,我们将讨论其语法、参数和示例。什么是? 对于维护安全连接非常重要。它充当保护程序,并确保连接到正确的服务器。语法:它具有以下语法:tls.checkServerIdentity(hostname, cert) ...
阅读 3 分钟
JavaScript 和 Node.js 编程中的强大而优雅的链式方法允许在单个语句中将多个函数调用链接在一起。这种模式通过消除对大量嵌套结构的需求并简化操作顺序来帮助提高可读性并增强代码的可维护性...
5 分钟阅读
这是在子进程中同步并行运行文件的有效命令。此函数可用于直接从 Node.js 应用程序执行系统命令或脚本或任何其他可执行文件和应用程序,获取输出和错误...
阅读 4 分钟
确保仅在必要时才加载模块和资源是加载它们的一个组成部分。实际上并非立即。Node.js 中的一个想法是惰性加载可以提高效率,从而减少内存使用和更快的初始加载时间。这意味着通过...
阅读 4 分钟
在本文中,我们将讨论 TypeScript 和 Node.js 之间的区别。但在讨论它们的区别之前,我们必须了解 TypeScript 和 Node.js。什么是 TypeScript?TypeScript 已取代 JavaScript,为该语言提供了静态类型。它有助于开发人员编写更可靠的...
阅读 4 分钟
在本文中,我们将讨论其功能、安装包以及一个示例。读取 QR 码:在开发 Node.js 应用程序时,通常需要与使用 QR 码进行通信的第三方应用程序或服务(包括支付网关)进行交互。QR 码...
5 分钟阅读
在本文中,我们讨论了 Node.js 的最佳模板引擎及其功能和用途。在讨论最佳模板引擎之前,我们需要了解 Node.js 中的模板引擎。什么是模板引擎?模板引擎是一种用于编译模板的软件工具……
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India