gpt4 book ai didi

javascript - Node.js Express 静态服务器卡在图像上 - 仅限 Chrome

转载 作者:数据小太阳 更新时间:2023-10-29 05:29:52 26 4
gpt4 key购买 nike

这是一个非常奇怪的错误,困扰了我很长时间。我有一个使用 Express Static 中间件以及呈现 Jade 的单独路由的基本网站。

这是我的配置

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

app.use(stylus.middleware({
src : __dirname + '/public',
dest : __dirname + '/public',
compile : function(str, path)
{
return stylus(str)
.set('filename', path)
.set('compress', true)
.use(nib())
}
}));


app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(cookieParser())
app.use(session({ secret: conf.sessionSecret,
store: new RedisStore(),
saveUninitialized: true,
resave: true
}));

app.use(express.static(__dirname + '/public'))

这是我的问题。在 Chrome 的单个选项卡中精确刷新 5 次后,图像文件拒绝加载。所有其他内容都很好,只有图片,而且只在 Chrome 中。为了解决这个问题,您必须打开一个新选项卡。我也在 Firefox 中测试过这个 - 没有问题。这个错误不仅发生在这个应用程序中 - 它也发生在我的许多其他应用程序中。

由于这个项目目前正在开发中,我不想把它放在网上作为例子。请放心,这是完全可重现的。有什么想法吗?

更新:我更新到 Express 4 是因为更新可能会解决我的问题的可能性很小。它没有。您可以看到我对问题 here 制作的屏幕截图.

更新:为了测试问题是否与静态服务器有关,我将代码修改为如下所示:

app.get('/img/*', function (req,res)
{
console.log(req.url);
console.log(path.extname(req.url));
if (imgExt.indexOf(path.extname(req.url)) != -1)
{
res.sendfile('./public/'+req.url);
}
});

app.use(express.static(__dirname + '/public'))

这没有效果,所以我认为这个问题要么是客户端问题,要么是 Chrome 的错误。

最佳答案

经过几个小时的调试,我发现了埋在我的服务器中的这段遗留代码。

app.get('/favicon.ico', function (req, res)
{
res.writeHead(200, {'Content-Type': 'image/x-icon'} );
});

它旨在防止旧版 Express 对网站图标的双重请求。显然我最后忘了调用 res.end() 。令我感到困惑的是,Firefox 和 Internet Explorer 都没有在刷新之间保持这种连接,而 Chrome 做到了。我感谢大家的对话!

关于javascript - Node.js Express 静态服务器卡在图像上 - 仅限 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com