मैं वेबपृष्ठों को क्रॉल करने के लिए एक हेडलेस ब्राउज़र बनाने के लिए वेबकिट आधारित टूल का उपयोग कर रहा हूं (मुझे इसकी आवश्यकता है क्योंकि मैं पृष्ठों पर पाए गए जावास्क्रिप्ट का मूल्यांकन करना चाहता हूं और अंतिम प्रस्तुत पृष्ठ प्राप्त करना चाहता हूं)। लेकिन, अब तक लागू दो अलग-अलग प्रणालियों ने बहुत खराब प्रदर्शन प्रदर्शित किया है।हेडलेस ब्राउज़िंग के लिए वेबकिट का उपयोग
- गूगल क्रोम का उपयोग करना:: मैं दो अलग अलग प्रणालियों, जो दोनों के बैकएंड के रूप में वेबकिट का उपयोग लागू कर दिया है मैं गूगल क्रोम शुरू करने और दूरस्थ डीबगिंग (debugging over wire) के लिए क्रोम द्वारा उजागर WebSockets का उपयोग कर प्रत्येक टैब के साथ संवाद करेंगे। इस तरह से मैं प्रत्येक टैब को नियंत्रित कर सकता हूं, एक नया पेज लोड कर सकता हूं और पृष्ठ लोड होने के बाद मैं लोड किए गए वेबपृष्ठ के डीओएम को लाता हूं।
- phantomjs का उपयोग करना: phantomjs पृष्ठों को लोड करने के लिए वेबकिट का उपयोग करता है और एक हेडलेस ब्राउज़िंग विकल्प प्रदान करता है। जैसा कि phantomjs के उदाहरणों में बताया गया है, मैं पृष्ठ पर नए URL को खोलने के लिए पेज.ऑपेन का उपयोग करता हूं और पृष्ठ पर जावास्क्रिप्ट का मूल्यांकन करके पेज लोड होने के बाद डोम को लाता हूं।
मेरा लक्ष्य पृष्ठों को क्रॉल करना जितना तेज़ हो सकता है और यदि पृष्ठ पहले 10 सेकंड में लोड नहीं होता है, तो घोषणा करें कि यह विफल हो गया है और आगे बढ़ें। मैं समझता हूं कि प्रत्येक पृष्ठ को लोड करने में कुछ समय लगता है, इसलिए प्रति सेकेंड लोड किए गए पृष्ठों की संख्या बढ़ाने के लिए, मैं क्रोम में कई टैब खोलता हूं या फ़ैंटोमज का उपयोग करके कई समांतर प्रक्रियाओं को प्रारंभ करता हूं।
- अगर मैं क्रोम/20 phantomjs उदाहरणों, ऊपर CPU उपयोग रॉकेट में 20 से अधिक टैब खोलने: निम्नलिखित प्रदर्शन है कि मैं का पालन है।
- उच्च CPU उपयोग के कारण, पृष्ठों की एक बहुत अधिक 10seconds लोड करने के लिए की तुलना में लेने के लिए और इसलिए मैं एक उच्च असफलता की दर है (~ में नाकाम रहने के पृष्ठ लोड अनुरोधों का 80%)
- मैं रखने के लिए करना चाहते हैं कम करने में विफल रहता कुल अनुरोधों में से 5% से अधिक, मैं प्रति सेकंड 1 से अधिक यूआरएल लोड नहीं कर सकता।
दोनों वेबकिट आधारित सिस्टम बाहर की कोशिश कर के बाद, यह महसूस करता है प्रदर्शन टोंटी की तरह वेबकिट प्रतिपादन इंजन है और इसलिए यहां अन्य उपयोगकर्ताओं से समझने के लिए चाहते हैं, प्रति सेकंड URL की संख्या है कि मैं क्रॉल करने के लिए उम्मीद कर सकते हैं। मेरे हार्डवेयर विन्यास है:
- प्रोसेसर: Intel® Core ™ i7-2635QM (1 प्रोसेसर, 4 कोर)
- ग्राफिक्स कार्ड: AMD Radeon HD 6490M (256MB)
- मेमोरी: 4GB
- नेटवर्क बैंडविड्थ काफी अच्छा प्रदर्शन से अधिक पृष्ठों है कि मैं
सवाल को देख रहा हूँ मैं इस मेलिंग सूची है पूछने के लिए कोशिश कर रहा हूँ लोड करने के लिए सक्षम होने के लिए है, किसी भी एक एक यादृच्छिक के लिए वेब पृष्ठों रेंगने के लिए वेबकिट के प्रयोग में अनुभवी करता है समुच्चय यूआरएल (ट्विटर स्ट्रीम से 10k यूआरएल चुनना), मैं कितने यूआरएल प्रति सेकंड क्रॉल करने की उम्मीद कर सकता हूं?
धन्यवाद
मैं एक महीने या तो में अपने प्रश्न का जवाब पता चल जाएगा :) मैं ऐसी ही कुछ कर रहा हूँ (लेकिन मैं कुछ और मूल्यांकन करना चाहते हैं) 'Node.js' और' PhantomJS' का उपयोग कर। इस बीच, मुझे आपके द्वारा प्राप्त उत्तरों से लाभ होगा! –