我是phantomjs的新手,在标准的centOS服务器上尝试它(安装了httpd等,但除了名称服务器设置为8.8.8.8和8.8.4.4之外,没有修改设置)。
我使用的是默认的loadspeed.js文件(可以重命名)。但是,页面速度似乎非常慢。下面是一个例子:
$ 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毫秒:
$ phantomjs phantomjs.js http://something.be
starting
Loading time 141 msec
有谁知道是什么原因导致我的连接速度这么慢?连接本身是正常的,wget下载几MB大小的文件需要几秒钟。
此外,当我在OSX上为Google本地运行完全相同的脚本时,输出如下:
phantomjs phantomjs.js http://google.com/
starting
Loading time 430 msec
发布于 2013-03-28 22:34:55
找到了-看起来ipv6是罪魁祸首。
我通过运行以下命令暂时禁用了它:
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
测试确认:
$ phantomjs phantomjs.js http://google.com
starting
Loading time 230 msec
发布于 2013-11-13 14:29:23
嗯,在我的例子中,页面正在等待一些GET请求,无法到达请求的服务器,它一直在等待很长时间。只有当我使用远程调试器选项时,我才能弄清楚。
phantomjs --remote-debugger-port=9000 loadspeed.js <some_url>
在loadspeed.js文件中
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,并查看控制台日志,从中我可以发现它等待了一些失败的请求很长一段时间。
要绕过此操作,请减少超时:
page.settings.resourceTimeout = 3000; //in secs
在那之后,事情变得非常迅速。希望这能有所帮助
https://stackoverflow.com/questions/15684185
复制相似问题