7

我的源代码:

 var http = require("http");
 var count=1;

 http.createServer(function(request, response) {
 response.writeHead(200, {"Content-Type": "text/plain"});    
 response.write("Hi, you are number "+count+" visitors");
 response.end();
 count++;
  }).listen(8888);  

每次访问我都得到 1,3,5,7,......。为什么要将计数增加 2?

4

3 回答 3

10

该请求favicon.ico触发了一个额外的请求(我通过记录每个请求的详细信息然后使用 Chrome 发出正常请求来确认这一点)。

您需要明确查找要匹配的请求类型(url、方法等)。

另外,请记住,如果您的服务器死了,它可能会在某个阶段死掉,您的计数将被重置。如果您不希望这样,您应该将其保存在不那么易变的地方,例如数据库。

于 2013-08-20T03:16:03.633 回答
0

如果您的服务器只是一个简单的计数器,并且知道该请求favicon.ico正在触发一个额外的请求,那么您可以简单地将每个请求计为一半,这样就可以得出准确的访问次数。

counter = counter + 0.5;
于 2013-12-30T15:34:19.190 回答
0

您可以忽略对 favicon.ico 的请求:

var server = http.createServer(function (req, res) {
    if(req.url === '/favicon.ico'){
        console.log('favicon');
        return;
    }
    userCount++;
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.write('Hello!\n');
    res.write('We have had ' + userCount + ' visits!\n');
    res.end();

});
于 2015-06-14T22:46:51.307 回答