2013-02-01 20 views
9

मैं किसी पृष्ठ को प्रभावित करने वाली दौड़ स्थिति की संभावना के बारे में कुछ मीट्रिक प्राप्त करने के लिए फ़ैंटोमज का उपयोग करने की कोशिश कर रहा हूं, मेरे पास 2 स्क्रिप्ट फ़ाइलें हैं, मेरी साइट पर होस्ट की गई कुछ कार्यक्षमता किसी तीसरे पक्ष से आने वाली फ़ाइल द्वारा सेट की गई कुछ ग्लोबल्स पर निर्भर है ।onResourceReceived प्रत्येक संसाधन को दो बार लॉग करता है?

मैंने सोचा था कि ऑनसोर्स का उपयोग करके फैंटोमज में इस्तेमाल किया गया था, जब मैं प्रत्येक फाइल लोड करता हूं तो लॉग इन कर सकता हूं और फिर उस दौड़ को कितनी बार इस दौड़ की स्थिति का कारण बनने का विचार प्राप्त करने के लिए एक गुच्छा का परीक्षण कर सकता है, मेरे कोड का एक उदाहरण नीचे है (यह है नहीं वास्तविक कोड और मैं बीबीसी के साथ संबद्ध नहीं कर रहा हूँ):

(function (p, wp) { 
    "use strict"; 
    var page, start, 
    count = 0, max = 10, 
    webpage = require('webpage'), 
    url = "http://www.bbc.co.uk"; 

    function process() { 
    if (max == count) { 
     console.log('done processing!'); 
     p.exit(); 
    } else { 
     count++; 
     start = new Date(); 
     page = wp.create(); 
     page.onResourceReceived = onResourceReceived; 
     page.open(url, onOpen); 
    } 
    } 

    function onResourceReceived(response) { 
    var match, t = new Date(), 
    url = response.url, 
    status = response.status; 
    t = t.valueOf() - start.valueOf(); 
    if (!!(match = url.match(/locator\.css/))) { 
     console.log(match[0] + ': ' + t + 'msecs status: ' + status); 
    } 
    if (!!(match = url.match(/en-GB\.json/))) { 
     console.log(match[0] + ': ' + t + 'msecs status: ' + status); 
    } 
    }; 

    function onOpen() { 
    console.log('Test ' + count + ' done!!!'); 
    page.close(); 
    process(); 
    } 

    process(); 
}(phantom, require('webpage'))); 

इस थोड़े समाप्त होने पर मुझे सिवाय इसके कि प्रत्येक फ़ाइल दो बार लॉग होता है, ऐसा क्यों है कि कैसे की उम्मीद? कभी-कभी समय अंतर बहुत अलग होते हैं। locator.css: 323msecs की स्थिति: 200 locator.css: 323msecs की स्थिति: 200 एन GB.json: 2199msecs की स्थिति: 200 एन GB.json: 2200msecs की स्थिति: 200 टेस्ट 1 किया !!!

उत्तर

17

आपको प्रतिक्रिया.स्टेज संपत्ति की जांच करने की आवश्यकता है। मंच शुरू और अंत होगा। शुरूआत पहली बाइट पहुंचने का समय देती है और अंत आपको पूर्ण प्रतिक्रिया मिलने पर देता है।

कृपया अपने फ़ंक्शन में एक चेक जोड़ें।

function onResourceReceived(response) { 
    if(response.stage == 'end') return; 
    //rest of your code from above example. 

};

+0

बहुत धन्यवाद यह उत्तर सही है –

संबंधित मुद्दे