2012-12-14 32 views
6

Nodejs ve phantomjs'i keşfetmek için dolambaçlı bir yerdeyim ve sayfa yükleme süresini ölçmek için küçük bir kod yazdım. Sayfa yükleme sürelerinin, saf phantomjs koduna göre nodejs ile sarılmış phantomjs kodu arasında farklı olduğunu buldum. Karşılaştırma için phantomjs ve nodejs: Aşağıda kodudurNodejs + phantomjs vs. saf phantomjs - sayfa yükleme süresi

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: phantomjs aracılığıyla bir site test ederken

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 + ''); 
}); 

zaman genellikle uzun 4 katıdır. Herhangi bir fikir?

+1

Ağ trafiğini PhantomJS'den (her iki durumda da) dökün ve karşılaştırın. Https://github.com/ariya/phantomjs/wiki/Network-Monitoring konusuna bakın. –

+1

Lütfen netleştirin, phantomjs çağrı phantomjs & nodejs'den 4 kez daha uzun mü? –

+0

http://phantomjs.org/network-monitoring.html (Yeni Bağlantı) –

cevap

0

PhantomJS, çıktı verilerini desteklemez, yalnızca bir web sayfası açar. phantomjs-node bunları aşağıdaki şekilde bağlayın - ExpressJS'nin bir örneğini oluşturur ve socket.io aracılığıyla verileri artırarak iki tane daha kitaplık kullanır. Ve veriler şöyle:

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

şimdi yaklaşık node-webkit okuma hız ve performans ile aynı sorun var, Node.js modüllerini destekleyen koltuk değneği olmadan yerel WebKit'tir.