2013-04-07 73 views
7

當我試着curl www.yelp.com它需要1.1秒。但是使用CasperJS檢索頁面需要一分鐘!CasperJS/PhantomJS比捲曲慢得多

這是正常的嗎?我如何找出什麼在減緩casper/phantom下降?我懷疑其casper沒有遵循的一些HTTP重定向?

var casper = require('casper').create(); 
var url = 'http://www.yelp.com'; 

casper.start(url); 
casper.then(function() { 
    console.log( this.getHTML()); 
    this.exit(); 
}); 

casper.run(); 

enter image description here

回答

3

你在Windows?如果是,則在使用自動代理時會出現神祕的網絡問題。有關更多詳細信息,請參閱發行說明:http://phantomjs.org/release-1.9.html

通常,嘗試分析網絡請求和響應。一個非常簡單的方法來跟蹤網絡通信:

page.onResourceRequested = function (request) { 
    console.log('Request ' + JSON.stringify(request, undefined, 4)); 
}; 
page.onResourceReceived = function (response) { 
    console.log('Receive ' + JSON.stringify(response, undefined, 4)); 
}; 

您需要進一步調整,如果你想定時等閱讀文檔在這個Network Monitoring功能。

+0

感謝您的洞察力。我用netsniff.js的HAR輸出更新了這個問題。似乎前30秒的前兩個.js文件來自Google,第三個.js文件是託管在GoogleCDN上的jQuery.min.js。任何想法爲什麼這些.js文件太慢? – Nyxynyx 2013-04-07 15:49:59

+0

這可能需要打開另一個問題:PhantomJS可以緩存這些常見的js文件,並將其與未來運行的Phantom實例共享嗎? – Nyxynyx 2013-04-07 16:40:25

+0

您是否多次運行過它?如果每一次它總是慢到30秒,恐怕只有低級網絡跟蹤(例如Wireshark)會顯示一些提示。 – 2013-04-07 23:02:46