Socket.IO客户端库加载缓慢。

7

enter image description here

我启动了我的服务器,并在浏览器中刷新页面,然后需要>2秒才能加载JS资源。如果我在任何浏览器中重新加载页面,则会快速加载。

这仅发生在服务器启动后的第一次请求。我想这可能与它首次组合JS文件有关,之后它就被缓存在服务器上。

有没有办法缩短这个时间?

我已经尝试过使用生产设置(gzip,minify等)和不使用生产设置。

客户端代码:

<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
</script>

服务器代码:

var express = require('express'),
    expressServer = express.createServer(),
    socketServer = require('socket.io').listen(expressServer);

expressServer.listen(1337);

抱歉,我发布问题太早了。现在我提供了更多信息。 - Markus Hedlund
这可能与此相关:https://dev59.com/ml7Va4cB1Zd3GeqPHjjD,请查看第一个答案。 - Erel Segal-Halevi
2个回答

3

目前socket.io存在一个bug,会导致加载速度变慢。请确保您没有设置这个参数,这样应该可以大大提高加载速度:

io.set('browser client gzip', true);          // gzip the file

第一次调用load socket.io.js将尝试压缩它并将其存储在内存中。您可能会遇到以下问题: 您可以使用缩小版本并允许缓存来获得一些速度提升,直到此问题得到解决。
io.set('browser client minification', true);  // send minified client
io.set('browser client etag', true);          // apply etag caching logic based on version number

我认为他们已经解决了gzip问题,因为我没有遇到过这个问题。我是对的吗?还是只有在Windows上使用gzip时才会出现这种情况?我的系统是Ubuntu 12.04。 - Maziyar
运行得很好(+1) - Tom

0

不知何故,你的 jQuery 库比 socket.io 库小了一半,但下载速度快了 50 倍。也许之前已经被缓存过了?最终,浏览器只是下载一个文件。

无论如何,this fellow 声称已经缩小了它。


请看我的澄清。 :) - Markus Hedlund
抱歉,我不明白您的澄清。冒着意外的讽刺风险,您能否阐述一下?无论如何,为了加快速度,您有三个选项:1)使socket.io库更小,以减少下载大小;2)将socket.io与另一个库捆绑在一起,以减少下载数量;3)从更快的服务器下载。 - Yusuf X
我启动服务器,用Chrome和Firefox加载页面。Chrome=慢,Firefox=快。然后我重新启动服务器,在Firefox中加载页面,然后在Chrome中加载。Chrome=快,Firefox=慢。 - Markus Hedlund
太长不看:第一个请求总是很慢,连续的请求很快,即使连续的请求是用另一个浏览器。 - Markus Hedlund
所以在服务器和电脑之间的某个地方有人正在缓存它。除非预加载是一个选项,否则你无能为力,除了通过使其更小来使第一次加载变得不那么缓慢。 - Yusuf X

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接