我目前正在试用Sails framework,到目前为止,我印象非常深刻。然而,我注意到的一个奇怪的事情是服务器为所有记录返回200 OK
而不是304 Not Modified
状态代码(即使没有更改)。
有没有办法让Sails为未修改的记录返回304?我问的原因是,这似乎是best practice ,并被Google和Facebook等大型玩家使用。
答案 0 :(得分:1)
简短的回答是肯定的,您只需在回复中设置Last-Modified
标题即可。
"Sails is built on Express",使用fresh(npmjs.org/package/fresh)到compare the request and response headers。
简单示例(基于Sails 0.10.0-rc5
):
sails new test304response
cd test304response
sails generate api user
- >生成User.js
和UserController.js
修改api/models/User.js
module.exports = {
schema: true,
attributes: {
name: {
type: 'string',
required: true
}
}
};
修改api/controllers/UserController.js
module.exports = {
find: function (req, res, next) {
console.log('find:', req.fresh);
User.findOne(req.param('id'), function foundUser(err, user) {
// set the Last-Modified header to the updatedAt time stamp
// from the model
res.set('Last-Modified', user.updatedAt);
res.json(user);
});
},
};
sails lift
localhost:1337/user/create?name=Joe
- >创建新用户localhost:1337/user/1
- >查询id为localhost:1337/user/1
- >查询同一用户,Last-Modified未更改304 – Not Modified
(即使在Chrome DevTools中,只要您未在设置中明确禁用它,它实际上会执行缓存。)免责声明:我刚刚开始学习风帆和节点,所以我可能错过了一个更简单/更清洁的解决方案。我也不完全确定,在所有情况下设置Last-Modified
都足够了。但是,我觉得你更有兴趣知道是否有可能而不是最佳实践。
希望这会有所帮助。 :)