📜  在 Node.js 中使用 apicache 中间件进行 API 响应缓存

📅  最后修改于: 2022-05-13 01:56:17.824000             🧑  作者: Mango

在 Node.js 中使用 apicache 中间件进行 API 响应缓存

缓存只是意味着存储数据。缓存 API 响应是指将请求的响应的副本保留特定时间以更快地检索数据。每当客户端请求资源时,请求都会通过缓存到达持有该资源的服务器。在请求路径中,如果请求的资源存在于缓存中,它将使用该副本而不是从服务器获取数据。缓存数据作为响应返回。因此,可以更快地提供数据并提高网络性能。  

方法:通过使用 API 缓存中间件,我们将从 JSONplaceholder API 获取数据并将 API 响应缓存五分钟。 API 缓存是一个 npm 包,可以更轻松地缓存 express 和 node.js 应用程序的 API 响应。响应将在特定时间段内备份,因此如果您请求相同的资源表示,则不会命中 API 端点,而是从缓存中检索数据。

在下面的示例中,我们将观察到数据检索得更快,因为它没有命中 API 端点。

环境设置:确保在本地机器上安装了 node.js,以及用于 API 测试的 Postman。如果您还没有安装它们,请点击这些链接。

  • Node.js:https://nodejs.org/en/download/
  • 邮递员:https://www.postman.com/downloads/
  • JSON Viewer Pro chrome 扩展:https://chrome.google.com/webstore/detail/json-viewer-pro/eifflpmocdbdmepbjaopkkhbfmdgijcc 用于将 JSON 响应可视化为树。

作为 Postman 的替代方案,您还可以使用 https://reqbin.com/ 进行 API 测试。

请按照以下步骤开始。

第 1 步:初始化 npm

创建一个新的项目目录并转到您的终端。使用以下命令初始化 npm:

npm init -y 

初始化 npm

第 2 步:安装依赖项。安装以下软件包:

  • express:node.js 框架
  • axios:发送 HTTP 请求
  • 摩根:记录请求
npm i express axios morgan 

安装所需的包

第 3 步:安装用于缓存 API 响应的中间件。使用以下命令安装 API 缓存包。

npm i apicache 

安装 apicache

第 4 步:创建一个 app.js 文件来编写缓存代码。首先,我们将在 app.js 文件中导入所有已安装的包,以便在我们的项目中使用它们。然后我们将配置中间件,即express、Morgan 和Apicache,并设置我们的服务器。我们将从 JSONplaceholder API 获取帖子和用户,并将路由缓存 5 分钟。

将以下代码添加到app.js文件中。

Javascript
const express = require('express');
const morgan = require("morgan");
const apicache = require("apicache");
const axios = require('axios');
  
// Create Express Server
const app = express();
  
app.use(morgan('dev'));
  
//configure apicache 
let cache = apicache.middleware
  
//caching all routes for 5 minutes
app.use(cache('5 minutes'))
  
app.get('/', (req, res) => {
    const data = axios.get(
    'https://jsonplaceholder.typicode.com/posts').then((response) => {
        res.send(response.data)
    })
})
  
app.get('/users', (req, res) => {
    const userData = axios.get(
    'https://jsonplaceholder.typicode.com/users').then((response) => {
        res.send(response.data)
    })
})
app.listen(3000, function() {
    console.log("Server is running on port 3000");
})


最终项目结构:

项目结构

运行应用程序的步骤:要运行 node.js 应用程序,请转到您的终端并编写以下命令。

node app.js 

输出:默认情况下,应用程序将在端口 3000 上运行。在浏览器上,您可以访问 localhost:3000 的帖子和 localhost:3000/users 的用户。

输出:从 API 访问帖子和用户

测试响应时间的步骤使用 Postman 向 localhost:3000 发送 GET 请求。

输出:最初,您会看到很长的响应时间。如果您多次发送 GET 请求,您会注意到由于响应缓存,数据的检索速度比初始响应时间快得多。当我们第一次请求资源时,数据会被缓存,再次请求时,会返回缓存的数据而不是访问 API 端点,从而加快响应时间。

测试响应时间

同样,向 localhost:3000/users 发送 GET 请求

输出:缓存响应后,您会注意到数据检索得更快。

测试响应时间