【问题标题】:Node.js + Express.js very slow serving static filesNode.js + Express.js 提供静态文件非常慢
【发布时间】:2014-11-24 05:30:43
【问题描述】:

有时在开发我当前的节点项目时,我会得到一个挂起的刷新。页面永远不会加载的地方。我检查了 Chrome 中的网络选项卡,发现它总是挂在静态文件上。卡住的静态文件会有所不同,有时是 CSS 文件,有时是图像文件。

我已尝试优化我的所有文件以希望解决此问题,但没有任何解决方法。如果我在长时间加载期间点击刷新,它将在第二次请求时正确加载页面。不是每次我尝试加载页面时都会发生这种情况,而是在页面之间切换时经常发生。

如果我在 chrome 网络检查器下禁用缓存,它几乎总是会发生。

**这是我的第一个主要节点项目,所以我可能会在此过程中犯错误。 **

整个项目托管在github上:http://github.com/polonel/trudesk

示例加载时间:(在新标签页中打开图片以查看完整尺寸)

【问题讨论】:

  • 你能发布你用来服务器静态文件的代码吗?
  • 您是否尝试在 all 其他中间件之前移动您的静态文件中间件?这样会话中间件就不会碰到 mongodb 等,这可能会在它有机会提供文件之前减慢速度。
  • 移动到我的中间件的顶部确实有助于缩短加载时间,但我仍在查看大约 5-10 秒的加载时间。
  • 我有同样的问题,虽然加载时间没有你的那么长。也在想办法。

标签: javascript node.js express


【解决方案1】:

我昨晚花了大约 3 个小时试图解决这个问题。我发现有一个 while 语句严重减慢了页面速度:

while ((incomingUsername !== "") && (incomingPassword !== "")){
   newAccount(incomingUsername, incomingPassword);
}
function newAccount(name, password){
    console.log("ACCOUNT REGISTRATION INITIATED");
}

当我注释掉 while 语句时,页面在几秒钟内加载完毕。

【讨论】:

  • 在我看来,while 循环永远不会退出。 condition 中的变量永远不会改变(就我们在这里看到的而言)。这会减慢页面加载速度。
【解决方案2】:

我遇到了完全相同的问题。我刚搬到一个互联网连接很差的地方。在我的 node.js 应用程序中加载静态文件的时间增加到每个文件超过 40 秒。

我只是移动了静态中间件

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

到 app.configure 函数的顶部,在所有其他 app.* 调用之前。

它现在的工作速度明显加快。

【讨论】:

  • 谢谢先生。天哪,这个问题困扰了我好几个星期。你是圣人。
  • 这解决了这个突然发生的非常奇怪的错误!知道为什么会这样吗?为什么会突然发生?
  • 我在静态文件夹之前压缩了图像,所以我们没有得到太多的减肥效果:sweat_smile:但花了很多时间。
猜你喜欢
  • 2018-09-21
  • 2017-05-16
  • 2020-08-03
  • 1970-01-01
  • 2013-03-06
  • 2013-10-19
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多