首页 文章

Express Mongoose自动缓存?

提问于
浏览
0

我今天得到的一个奇怪的观察是这样的:

我们有一个用 NodeJSexpressmongoose 制作的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 回答

  • 0

    304表示资源尚未修改

    表示自请求标头If-Modified-Since或If-None-Match指定的版本以来未对资源进行修改 . 在这种情况下,不需要重新传输资源,因为客户端仍然具有先前下载的副本

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304

    另见RFC7232 https://tools.ietf.org/html/rfc7232

    这是浏览器缓存,之前发送的标头未被修改 . 当您手动编辑数据库时,它们将被编辑...因此您没有获得浏览器缓存副本,但您下载了新副本 .

相关问题