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 に答える