清除缓存服务器缓存的请求

问题描述 投票:0回答:1

我正在使用Flutter创建一个角色猜测游戏移动应用程序,并使用Node.js和Express.js作为后端创建一个API。移动应用程序应该调用API以从MongoDB数据库中获取所有字符类别,API将它们返回到移动应用程序(并在途中将其缓存1天),移动应用程序将这些类别及其数据保存在一个数组,然后再次调用API以从数据库中获取随机字符。

API的代码如下:

const express = require('express');

const app = express();

// Get All Categories
app.get('/categories/all', async (request, response) => {
  response.set('Cache-Control', 'public, max-age=86400, s-maxage=86400'); // 86,400 Seconds = 1 Day
  response.send(await mongodbDriver.getAllCategories());
});

// Get One Character Randomly
app.get('/characters/one/random', async (request, response) => {
  response.send(await mongodbDriver.getRandomCharacter());
});

缓存结构应该类似于链接中的图像:

https://i.ibb.co/S3wYkhd/Caching-Server-Architecture.jpg

[如果有一天我添加了一个新类别,在该类别中添加了字符,并且API返回了具有该新类别的随机字符,但是该移动应用程序没有关于它的数据,因为当它获取所有类别时,缓存服务器会做出响应带有旧版本,并且角色的新类别不在获取的类别中。

[发生这种情况时,我希望移动应用程序发送请求以从缓存服务器清除缓存,方法是将请求发送到Node.js API,然后该API调用缓存清除方法,或者将请求发送到直接缓存服务器。这样的事情有可能吗?

node.js express flutter networking cache-control
1个回答
0
投票

我已经找到了解决方法elhamdulillah。如果我担心可以得到不包含新添加类别的旧版本的Categories数组,并且查询了随机字符,并且该字符与数组中缺少的新类别一起返回。我应该向API发出第三个请求,以按ID获取类别,然后将其添加到数组中。这样就可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.