2012-12-14 7 views
6

Ich stocherte gerade um Nodejs und Phantomjs erkunden und schrieb einen kleinen Code, um die Ladezeit der Seite zu messen. Ich habe festgestellt, dass sich die Seitenladezeiten zwischen den Phantomjs-Codes, die in Nodejs eingeschlossen sind, unterscheiden, verglichen mit reinem Phantomjs-Code. Unten ist der Code: PhantomJS und NodeJS zum Vergleich:Nodejs + Phantomjs vs reine Phantomjs - Ladezeit der Seite

NodeJS:

var http = require('http'), 
phantom = require('phantom'); 
url = require("url"); 

http.createServer(function (request, response) { 
    var start = Date.now(); 

    request.on('end', function() { 
    phantom.create(function(ph) { 
     ph.createPage(function(page) { 
     var _get = url.parse(request.url, true).query; 

     page.open(_get[url], function(status) { 
      if (status == 'success') { 
      var time = Date.now() - start; 
      console.log(time); 
      } 
     }); 
     }); 
    }); 
    }); 
}).listen(80,''); 

PhantomJS:

var page = require('webpage').create(); 
var system = require('system'); 

var address = system.args[1]; 
var time = 0; 
var start = Date.now(); 

page.open(address, function (status) { 
    time = Date.now() - start; 
    console.log(time + ''); 
}); 

Es ist in der Regel länger 4 Mal, wenn eine Website über PhantomJS testen. Irgendwelche Ideen?

+1

Dump den Netzwerkverkehr von PhantomJS (für beide Fälle) und vergleichen Sie sie. Siehe https://github.com/ariya/phantomjs/wiki/Network-Monitoring. –

+1

Bitte können Sie klären, direkte phantomjs Anruf ist 4 mal länger als phantomjs & nodejs? –

+0

http://phantomjs.org/network-monitoring.html (Neuer Link) –

Antwort

0

PhantomJS unterstützt keine Ausgabe von Daten, es öffnet nur eine Webseite. phantomjs-node verbinden Sie sie in der folgenden Weise - es erstellt eine Instanz von ExpressJS und überträgt Daten über seine socket.io plus zwei weitere Bibliotheken. Und Daten geht:

WebPage> Phantom.js>dnode + node-browserify> Express.js> Socket.io> Node.js

Ich habe das gleiche Problem mit der Geschwindigkeit und Leistung jetzt das Lesen über node-webkit, das native WebKit ohne Krücken unterstützt Node.js Module.