首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Phantomjs加载页面速度很慢

Phantomjs加载页面速度很慢
EN

Stack Overflow用户
提问于 2013-03-28 22:16:22
回答 2查看 9.4K关注 0票数 18

我是phantomjs的新手,在标准的centOS服务器上尝试它(安装了httpd等,但除了名称服务器设置为8.8.8.8和8.8.4.4之外,没有修改设置)。

我使用的是默认的loadspeed.js文件(可以重命名)。但是,页面速度似乎非常慢。下面是一个例子:

代码语言:javascript
复制
$ phantomjs phantomjs.js  http://www.google.com/
starting
Loading time 90928 msec

$ phantomjs phantomjs.js http://173.194.67.138/ #(one of google's public ips)
starting
Loading time 30204 msec

当我在服务器上加载任何url (如http://something.be )时,加载时间为141毫秒:

代码语言:javascript
复制
 $ phantomjs phantomjs.js http://something.be
 starting
 Loading time 141 msec

有谁知道是什么原因导致我的连接速度这么慢?连接本身是正常的,wget下载几MB大小的文件需要几秒钟。

此外,当我在OSX上为Google本地运行完全相同的脚本时,输出如下:

代码语言:javascript
复制
 phantomjs phantomjs.js http://google.com/
 starting
 Loading time 430 msec
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-28 22:34:55

找到了-看起来ipv6是罪魁祸首。

我通过运行以下命令暂时禁用了它:

代码语言:javascript
复制
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

测试确认:

代码语言:javascript
复制
$ phantomjs phantomjs.js http://google.com
starting
Loading time 230 msec
票数 23
EN

Stack Overflow用户

发布于 2013-11-13 14:29:23

嗯,在我的例子中,页面正在等待一些GET请求,无法到达请求的服务器,它一直在等待很长时间。只有当我使用远程调试器选项时,我才能弄清楚。

代码语言:javascript
复制
phantomjs --remote-debugger-port=9000 loadspeed.js <some_url>

在loadspeed.js文件中

代码语言:javascript
复制
page.onResourceRequested = function (req) {
    console.log('requested: ' + JSON.stringify(req, undefined, 4));
};

page.onResourceReceived = function (res) {
    console.log('received: ' + JSON.stringify(res, undefined, 4));
};

然后在任何webkit浏览器(safari/chrome)中加载localhost:9000,并查看控制台日志,从中我可以发现它等待了一些失败的请求很长一段时间。

要绕过此操作,请减少超时:

代码语言:javascript
复制
page.settings.resourceTimeout = 3000; //in secs

在那之后,事情变得非常迅速。希望这能有所帮助

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15684185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档