配置 sails.js 不缓存响应

6
我有一个基于sails.js框架的node.js应用程序。为了向用户展示信息,我实现了一些.ejs文件。在使用应用菜单中的链接导航时,我收到一个“304 - 无修改”的响应。此外,在响应头中,我看到了Etag、If-None-Match或Expires。根据阅读一些帖子的经验,我在config/express.js文件中的customMiddleware函数中添加了“app.disable('etag')”语句,并且不再发送etag和if-none-match。但是,现在在访问不同页面时(甚至没有304响应),我都看不到任何请求发送到服务器。如何告诉sails.js停止缓存我的页面?
2个回答

12

如果您不希望将此设置应用于整个应用程序,可以将其添加到策略中,然后仅将其应用于特定页面/请求。

/api/policies/nocache.js:

/**
 * Sets no-cache header in response.
 */
module.exports = function (req, res, next) {
    sails.log.info("Applying disable cache policy");
    res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
    res.header('Expires', '-1');
    res.header('Pragma', 'no-cache');  
    next();
};

这看起来非常不错。我的下一个目标是找到一种方法,在config / env下仅在development环境中执行此操作。 - user677526

1
似乎添加下面的代码解决了我的问题:
res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
res.header('Expires', '-1');
res.header('Pragma', 'no-cache');  

这些代码应该包含在 /config/express.js 文件的 customMiddleware 函数中。
如果有更简洁的实现方式,请回复。

一个更好的方法来实现相同的结果,但仅适用于特定页面,可以像@c1freitas之前提到的那样完成。 - Victor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接