我对 Mac 上的核心数量有点困惑。我不太清楚处理器、内核和线程之间的区别。如果我检查“关于此 Mac”,我会看到 1 个处理器,2 个内核。但我在 Node.js 中工作,如果我检查os.cpus().length,它会返回 4。为什么这些数字不同?仅仅是因为每个核心有2个线程吗?
我正在使用node和express作为iOS应用程序的后端.数据存储在SQL Server数据库中,因此iOS应用程序查询服务器,服务器查询数据库,服务器接收数据库响应,然后将响应转发给iOS应用程序.我试图弄清楚缓存是如何工作的.我正在提供很多静态内容 - 例如博客文章.所以我计划使用etags,但我不确定它应该如何工作.我发出请求,获取内容,并在客户端缓存响应.好.然后,我稍后使用存储在"If-None-Match"标题中的先前响应的etag进行相同的请求.那又怎样?
Express.js会自动处理吗?它似乎没有 - 我无法得到它产生304响应.如果我在发送响应之前尝试检查响应头,我会得到null,所以在发送之前我无法获得响应的etag.那么我应该如何将请求etag与服务器发回的内容的etag进行比较?我是否应该使用自定义生成的etags并在服务器上缓存这些etags,然后将请求etags与此缓存进行比较?
下面是我设置的非常简单的测试方法,不涉及数据库.我只是向服务器发送一个号码,它返回正方形.如果我将带有etag的请求发送到同一个网址,我会得到相同的回复.我可以检查请求的"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);
});
Run Code Online (Sandbox Code Playgroud)