Node.js HTTP服务器加载缓慢及请求计数翻倍问题咨询
Node.js HTTP服务器问题解答
一、浏览器等待10分钟才显示结果的原因
你的代码中调用了response.write()发送响应内容,但没有调用response.end()来结束HTTP响应。HTTP协议要求每个请求必须伴随完整的响应结束标记,Node.js的HTTP服务器在调用end()之前,不会向客户端发送响应结束的信号,浏览器会一直处于等待状态,直到连接超时(约10分钟)才会尝试显示已接收的内容。
二、刷新时requestsCount递增两次的原因
浏览器在请求页面时,会自动额外发送一个GET /favicon.ico请求,用于获取网站的标签页图标。所以每次刷新浏览器,实际上会向服务器发送两个请求:一个是页面本身的GET /请求,另一个是GET /favicon.ico请求,导致requestsCount被递增两次,显示结果为2、4、6这类偶数。
修正后的代码
const http = require('http') let requestsCount = 0 const server = http.createServer((request, response) => { // 过滤favicon.ico请求,避免计数被额外增加 if (request.url === '/favicon.ico') { response.end() return } requestsCount++ response.write(`Leo Garsia ${requestsCount}`) // 调用end()结束响应,让浏览器及时接收完整结果 response.end() }) server.listen(3005, () => { console.info('Server is Running on port 3005') })
内容的提问来源于stack exchange,提问作者Leo Garsia
相关产品推荐
相关产品推荐

