我今天得到的一个奇怪的观察是这样的:
我们有一个用 NodeJS , express 和 mongoose 制作的REST API . 有一个 GET
endpoints /api/cars
,它可以非常简单地从Car模型中返回一个汽车列表:
app.get('/cars', (req, res, next) => {
Car.find()
.exec()
.then(cars => {
res.status(200).send(cars);
}, error => {
next(error);
});
});
有趣的是,第二次通过浏览器访问 endpoints 返回状态代码 304
,这意味着它确实缓存了它(修改数据库中的列表会将状态更改回 200
) . 但是,我不太明白它发生在哪里以及是谁做到了 . 如果我手动缓存 Redis 数据库中的列表并从那里检索它,则响应总是 200
,即使数据根本没有修改 . 那么这是 mongoose 的一部分吗?
我的意思是我欣赏自动缓存,但我想知道它是如何发生的 . 我们没有使用特定的缓存模块进行表达 .
1 回答
304表示资源尚未修改
(https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304)
另见RFC7232 https://tools.ietf.org/html/rfc7232
这是浏览器缓存,之前发送的标头未被修改 . 当您手动编辑数据库时,它们将被编辑...因此您没有获得浏览器缓存副本,但您下载了新副本 .