LINUX.ORG.RU

NodeJS fs.readFile

 , ,


0

1

Всем день добрый. Вопрос такой, сел вспомнить NodeJS и интереса ради накидал сразу вот такой вот серверок, чтобы протесить пару вещей:

var http = require('http');
var fs = require('fs');

http.createServer(function(req, res){
    fs.readFile('test.txt', 'utf-8', function(err, data){
        res.write(data);
        console.log(data);
        res.end();
    });
}).listen(3030);
Тревиальнейший случай, но вот что я заметил, при переходе по адресу localhost:3000 мне на страницу выдает содержимое файла, но в консоль выдает содержимое файла дважды, не могу понять за счет чего это происходит, в chrome devtools вижу что один request приходит, а вот почему дважды выдает содержимое в консоль так и не понял.



Последнее исправление: Berdin (всего исправлений: 1)

Возможно, твой tools пи*ит. Браузер обычно запрашивает документ и favicon, поэтому 2 запроса, все правильно.

terminator-101
()
Ответ на: комментарий от terminator-101

Но запроса на favicon нету, может он и врет и не показывает) потому что я вижу что в консоль дважды выдает содержимое, в браузере то не покажет этого.

Berdin
() автор топика
Ответ на: комментарий от Berdin

Но запроса на favicon нету, может он и врет и не показывает) потому что я вижу что в консоль дважды выдает содержимое, в браузере то не покажет этого.

Ты как проверяешь? Напиши req.url

terminator-101
()
Ответ на: комментарий от Berdin

Проверил ща. Все правильно, хром запрашивает фавикон. Опера на вебките — тоже. Но вот что интересно, firefox не запрашивает. Может у меня в настройках там чо, хз. Проверь у себя на файерфоксе, че то интересно стало.

terminator-101
()

Плюсую terminator-101.

Поставь какой-нибудь url на отдачу файла, да и все.

renya ★★★★★
()
Ответ на: комментарий от terminator-101

Протестил, вот что выдала консоль:

/
/favicon.ico

Выходит запрашивает favicon, выходит, если на мой url идет эти два запроса, то содержимое файла считывается дважды.

Berdin
() автор топика
Ответ на: комментарий от Berdin

Если ты хочешь спросить что делать, чтобы этого не было, но стесняешься, сделай например так


var http = require('http');
var fs = require('fs');

http.createServer(function(req, res){
    if(req.url==="/"){
        fs.readFile('test.txt', 'utf-8', function(err, data){
        res.write(data);
        console.log(data);
        res.end();
    });
    }

}).listen(3030);

terminator-101
()
Ответ на: комментарий от terminator-101

Я так уже и сделал) Я не стеснялся) Просто было интересно почему дважды читает файл)

Berdin
() автор топика
Ответ на: комментарий от Berdin

А попробуй несколько раз. Я почему спрашиваю. У меня файерфокс с очищенной историей тоже запрашивает favicon, но при дальнейших запросах уже не запрашивает. Просто сделай запрос с файерфокса, а потом перезагрузи страницу несколько раз, и посмотри на вывод в консоли req.url. Будет он запрашивать favicon при дальнейших обращениях или нет. Я вот протестил на 2-х компах, и у меня в обеих случаях запрашивает только 1 раз до очищения истории.

terminator-101
()
Ответ на: комментарий от terminator-101

запрашивает favicon, но при дальнейших запросах уже не запрашивает

Это есть кеширование, собственно, как оно есть. Браузероспецифичные штуки могут проявиться, если на favicon.ico приходит 404 или его содержимое не есть картинка.

BigAlex ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.