express ajax 304缓存禁用,如何使用Express.js返回304未修改的状态?

我使用节点并表示iOS应用程序的后端。数据存储在SQL Server数据库中,所以iOS应用程序查询服务器,服务器查询数据库,服务器接收数据库响应,然后将响应转发给iOS应用程序。我试图找出缓存如何工作。我服务了很多静态内容 - 例如博客文章。所以我打算使用etags,但我不确定它应该如何工作。我提出请求,获取内容并在客户端缓存响应。好。然后,我在之后的“If-None-Match”标题中存储前一个响应的etag。那又怎么样?如何使用Express.js返回304未修改的状态?

Express.js是否自动处理?它似乎并没有 - 我无法让它产生一个304响应。如果我在发送响应之前尝试检查响应头,我会得到空值,所以在发送响应之前我无法获得响应的etag。那么我该如何将请求etag与服务器将发回的内容的etag进行比较?我是否应该使用自定义生成的etags并将其缓存在服务器上,然后将请求etags与此缓存进行比较?

下面是我设置的一个非常简单的路线来测试这个,没有涉及数据库。我只是向服务器发送一个数字,然后它返回正方形。如果我发送带有etag的请求到相同的URL,我将得到相同的响应。我可以检查请求的'If-None-Match'标题,但是为了确定是否应该发送304而不是200状态,我该如何比较它?

router.use("/square/:testId", function(req, res) {

var obj = {};

obj["testId"] = req.params.testId;

obj["result"] = req.params.testId * req.params.testId;

res.setHeader('Cache-Control', 'public, max-age=5');

var h2 = JSON.stringify(res.headers,null,2);

console.log("The response headers: " + h2);

//Prints null

res.status(200).send(obj);

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值