ब्राउज़र को कैसे पता चलता है कि कितना पेज लोड किया गया है?


6

ब्राउज़र की प्रगति पट्टी को देखते हुए जो कभी-कभी वेब-पेज लोडिंग के दौरान अंत के पास धीमा हो जाता है, मैं सोच रहा था कि क्या ब्राउज़र के आधार पर पता चलता है कि आकार पृष्ठ पर मौजूद तत्वों या नहीं। तत्वों का या कुछ और?

हो सकता है कि किसी ने फ़ायरफ़ॉक्स या किसी अन्य ब्राउज़र के स्रोत की जाँच की हो, इस बारे में थोड़ा और विस्तार से जानते हैं?


नेटस्केप 1.1 की यादें वापस लाता है और इसके "दिलचस्प" इस पर ले ...
James

फ़ायरफ़ॉक्स में एक प्रगति पट्टी है?
William Jackson

जवाबों:


15

क्या है एक वेबसाइट लोड हो रहा है?

एक वेब पेज लोड हो रहा है है कमोबेश किसी फाइल को डाउनलोड करना। सर्वर द्वारा आपको क्या मिलता है - ज्यादातर मामलों में - बस एक HTML फ़ाइल HTTP पर स्थानांतरित की जाती है। सबसे पहले, आप साइट के URL के लिए एक HTTP अनुरोध करते हैं, जैसे GET http://superuser.com

विलियम जैक्सन ने कहा, HTTP का उपयोग करता है Content-Length हेडर फ़ील्ड आपको पहले से उस फ़ाइल का आकार दिखाने के लिए। यह कुछ ऐसा है जो ब्राउज़र यह अनुमान लगाने के लिए मूल्यांकन कर सकता है कि उसने पूरी साइट को डाउनलोड करने में कितनी प्रगति की है।

हालाँकि, यह उन सभी संसाधनों को कवर करने में विफल रहता है जिन्हें HTML फ़ाइल संदर्भित करके लोड कर सकती है। इनमें शामिल हो सकते हैं:

  • बाहरी चित्र
  • बाहरी स्टाइलशीट
  • बाहरी लिपियाँ
  • फ्रेम्स
  • AJAX लोड करता है

ब्राउज़र को कैसे पता चलता है कि कितना लोड करना है?

अब इन संदर्भों को ढूंढना और उन्हें भी अनुरोध करना ब्राउज़र का कार्य है। इसलिए, प्रत्येक बाहरी संदर्भ के लिए, ब्राउज़र या तो अपने कैश से परामर्श करेगा, या एक नया HTTP अनुरोध भेजेगा। सुपर उपयोगकर्ता के लिए, यह तेज़ प्रदर्शन के लिए सामग्री वितरण नेटवर्क पर होस्ट की गई निम्न फ़ाइलें होंगी:

  • GET http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js - मुख्य jQuery फ़ाइल
  • GET http://cdn.sstatic.net/js/stub.js - कुछ जेएस फ़ंक्शन
  • GET http://cdn.sstatic.net/superuser/all.css - स्टाइलशीट
  • ...

जब आप समयरेखा ट्रैकिंग सक्षम करते हैं तो आप वास्तव में फायरबग या क्रोम के डीबगर का उपयोग करके इसे देख सकते हैं। यह सुपर उपयोगकर्ता को लोड करने की समय सीमा है, फ़िल्टर किया गया है ताकि केवल अनुरोध दिखाए जाएं। बड़ा करने के लिए क्लिक करें:

enter image description here

जैसा कि हम देख सकते हैं, मुख्य सुपर उपयोगकर्ता साइट को लोड होने में सबसे लंबा समय लगेगा, लेकिन इसमें से कैस्केडिंग, अन्य पेज लोड (यानी HTTP अनुरोध या कैश अनुरोध) शामिल हैं। उन सभी को भी बेनकाब किया Content-Length, इसलिए ब्राउज़र इन सभी फाइलों को लोड करने में कितना समय लेगा, इसका अच्छा अनुमान लगा सकते हैं।

और चूंकि यह सब बहुत कम समय सीमा के भीतर हो रहा है, आप प्रगति पट्टी में छोटी अनियमितताओं को नोटिस नहीं करेंगे। कभी-कभी आप प्रगति पट्टी को दो तिहाई पर लटका देखेंगे - ऐसा तब हो सकता है जब ब्राउज़र बाहरी संसाधन को दूसरों के रूप में तेजी से लोड करने में विफल रहता है।

ब्राउज़र इसे कैसे लागू करते हैं?

गूगल क्रोम

मैंने Google Chrome (a.k.a. Chromium) के स्रोतों पर ध्यान दिया है और इस वर्ग को बुलाया ProgressTracker.cpp । दरअसल, यह Apple द्वारा लिखा गया है, इसलिए यह संभवतः सबसे उपजी है वेबकिट रेंडरिंग इंजन। इसमें निम्नलिखित फ़ील्ड शामिल हैं:

ProgressTracker::ProgressTracker()
    : m_totalPageAndResourceBytesToLoad(0)
    , m_totalBytesReceived(0)

इस प्रकार, जैसा कि मैंने कहा, संसाधन बाइट्स की कुल संख्या की पहचान की जाएगी, और प्रगति को तदनुसार बदला जाएगा। एक दिलचस्प टिप्पणी है जो आपको बताती है कि पहले लोड किए गए पृष्ठ का वास्तविक महत्व कैसे बढ़ा है:

// वेबकोर लेआउट सिस्टम का उपयोग करने वाले दस्तावेज़ों के लिए, पहले लेआउट को आधे रास्ते के बिंदु के रूप में समझें।

इसलिए, यदि पहला पृष्ठ लोड किया गया है (और इसके बाहरी संसाधनों को अभी भी लोड करना है), प्रगति 50% होगी।

फ़ायरफ़ॉक्स (विखंडन ऐड-ऑन)

अब, वहाँ भी थोड़ा आसान मीट्रिक है। में देखा है विखंडन फ़ायरफ़ॉक्स के लिए प्रगति बार विस्तार। अगर मैं इसे गलत तरीके से नहीं पढ़ रहा हूं, तो यह कुछ ऐसा करता है जो आसानी से सोच सकता है।

हर वेब साइट में कई की संख्या होती है डोम तत्व । पहली HTML साइट को पार्स करके, लोड किए जाने वाले DOM तत्वों की कुल संख्या का अनुमान लगाया जा सकता है।

प्रत्येक लोड किए गए DOM तत्व के लिए, काउंटर बढ़ाएँ, और बस उसके अनुसार एक प्रगति बार प्रदर्शित करें।


कभी-कभी कोई सादगी की लालसा पाता है। IBM WebExplorer ने प्राइमरी पेज के लिए प्रतिशत प्रगति संकेतक और छवियों को लोड करने वाले प्रत्येक कार्यकर्ता के लिए अतिरिक्त व्यक्तिगत प्रतिशत प्रगति संकेतक दिखाए।
JdeBP

1

जब कोई ब्राउज़र किसी सर्वर से किसी फ़ाइल का अनुरोध करता है, तो सर्वर के पास ब्राउज़र को यह बताने का विकल्प होता है कि फ़ाइल कितनी बड़ी है। सर्वर एक भेजकर ऐसा करता है सामग्री-लंबाई हेडर

के बारे में कुछ अन्य जानकारी है कैसे एक ब्राउज़र एक फ़ाइल के आकार को निर्धारित कर सकता है जिसे वह डाउनलोड कर रहा है


क्या यह सिर्फ मैं या यह उत्तर वेब-पेज लोड करने के बजाय "फ़ाइल डाउनलोड" के बारे में बात करता प्रतीत होता है। यद्यपि आप कह सकते हैं कि वेब पेज लोड करना मूल रूप से कई फाइलों का डाउनलोड है, लेकिन मुझे लगता है कि वेब पेज लोडिंग की प्रगति एक साधारण फ़ाइल डाउनलोड की तुलना में अधिक जटिल है।
Atul Goyal

1
HTML एक फ़ाइल डाउनलोड है। CSS एक फ़ाइल डाउनलोड है। चित्र फ़ाइल डाउनलोड हैं। जावास्क्रिप्ट फ़ाइलें फ़ाइल डाउनलोड हैं। नहीं, पेज लोड करना "एक साधारण फ़ाइल डाउनलोड" नहीं है; जब यह पता चलता है कि फैंसी प्रोग्रेस बार है, तो ब्राउजर पेज पर हर सिंग् ट संसाधन की सामग्री-लंबाई के लिए खाता है।
William Jackson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.