2013-04-07 20 views
7

Po wypróbowaniu curl www.yelp.com trwa to 1,1 s. Jednak pobieranie strony za pomocą CasperJS trwa ponad minutę!CasperJS/PhantomJS znacznie wolniej niż Curl

Czy to normalne? Jak mogę dowiedzieć się, co spowalnia casper/phantom? Podejrzewam jego niektóre przekierowania HTTP, których casper nie śledzi?

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

Odpowiedz

3

Czy jesteś na Windows? Jeśli tak, istnieje tajemniczy problem z siecią, gdy używany jest automatyczny serwer proxy. Zobacz informacje o wydaniu, aby uzyskać więcej informacji: http://phantomjs.org/release-1.9.html.

Ogólnie spróbuj przeanalizować żądania i odpowiedzi sieciowe. Bardzo prosty sposób śledzić ruch sieciowy:

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

trzeba go dostosować dalej, jeśli chcesz taktowanie itp Przeczytaj dokumentację na ten temat Network Monitoring funkcji.

+0

Dzięki za wgląd. Zaktualizowałem questoin z wyjściem HAR z netsniff.js. Wygląda na to, że pierwsze 2 pliki .js, które trwają 30 sekund, pochodzą z Google, a trzeci plik .js to jQuery.min.js hostowany na GoogleCDN. Wszelkie pomysły, dlaczego te pliki .js są tak wolne? – Nyxynyx

+0

To prawdopodobnie wymaga otwarcia kolejnego pytania: czy PhantomJS może buforować te wspólne pliki js i udostępniać je w przyszłych instancjach Phantom, które działają? – Nyxynyx

+0

Czy uruchomiłeś go wiele razy? Jeśli za każdym razem jest to zawsze tak wolne, jak 30 sekund, obawiam się, że tylko śledzenie sieci niskiego poziomu (na przykład Wireshark) ujawni pewne wskazówki. –

Powiązane problemy