2013-04-07 30 views
7

Khi tôi thử curl www.yelp.com, mất 1,1 giây. Tuy nhiên việc truy xuất trang bằng cách sử dụng CasperJS mất hơn một phút!CasperJS/PhantomJS chậm hơn nhiều so với Curl

Điều này có bình thường không? Làm thế nào để tìm hiểu những gì đang làm chậm casper/phantom xuống? Tôi nghi ngờ một số chuyển hướng HTTP mà casper không theo dõi?

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

Trả lời

3

Bạn có trên Windows? Nếu có, có một vấn đề mạng bí ẩn khi proxy tự động đang được sử dụng. Xem ghi chú phát hành để biết thêm chi tiết: http://phantomjs.org/release-1.9.html.

Nói chung, hãy thử phân tích các yêu cầu và phản hồi mạng. Một cách rất đơn giản để theo dõi lưu lượng mạng:

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

Bạn cần phải tinh chỉnh nó thêm nếu bạn muốn thời gian, vv Đọc tài liệu về vấn đề này Network Monitoring tính năng.

+0

Cảm ơn thông tin chi tiết. Tôi đã cập nhật questoin với đầu ra HAR từ netsniff.js. Có vẻ như 2 tệp .js đầu tiên mất 30 giây là từ Google và tệp .js thứ ba là jQuery.min.js được lưu trữ trên GoogleCDN. Bất kỳ ý tưởng nào tại sao các tệp .js này quá chậm? – Nyxynyx

+0

Điều này có thể yêu cầu mở một câu hỏi khác: Có thể PhantomJS cache các tệp js phổ biến này và chia sẻ chúng với các phiên bản tương lai của Phantom chạy không? – Nyxynyx

+0

Bạn đã chạy nó nhiều lần chưa? Nếu mỗi lần nó luôn luôn chậm như 30 giây, tôi sợ chỉ một truy tìm mạng cấp thấp (ví dụ Wireshark) sẽ tiết lộ một số gợi ý. –

Các vấn đề liên quan