← Back to HTML Course | Chapter 7: Advanced APIs & Features | Lesson 10 of 11

HTML Performance

सोचिए आप किसी वेबसाइट लिंक पर क्लिक करते हैं और पेज लोड होने का इंतज़ार करते हैं। पहले, दस सेकंड तक एक खाली सफेद स्क्रीन दिखती है। फिर, एक बड़ी इमेज धीरे-धीरे रेंडर होती है, जिससे सारा टेक्स्ट नीचे धकेल जाता है। आखिर में पेज लोड होता है, लेकिन जब आप किसी बटन पर क्लिक करते हैं, तो कुछ नहीं होता क्योंकि स्क्रिप्ट अभी भी डाउनलोड हो रही है। HTML performance इस निराशाजनक अनुभव को रोकता है। यह आपकी फाइलों और asset को इस तरह व्यवस्थित, स्ट्रक्चर, और लोड करने की प्रैक्टिस है कि आपकी वेबसाइट तुरंत लोड हो। अपनी HTML performance को ऑप्टिमाइज़ करने से आपकी साइट रिस्पॉन्सिव बनी रहती है, बैंडविड्थ बचती है, और आपकी कन्वर्ज़न रेट बढ़ती है।

वेब परफॉर्मेंस को ऑप्टिमाइज़ करना

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

Note: तेज़ डाउनलोड स्पीड सुनिश्चित करने के लिए अपने HTML कोड को हल्का और मिनिफाइड रखें।
Warning: धीमी लोड होने वाली वेबपेज विज़िटर्स को आपकी साइट छोड़ने पर मजबूर कर देगी और आपकी सर्च इंजन रैंकिंग कम कर देगी।

उदाहरण: Optimizing Web Performance

markup
<link rel="stylesheet" href="styles.min.css">

Deferred और Async स्क्रिप्ट लोडिंग

डिफ़ॉल्ट रूप से, ब्राउज़र स्क्रिप्ट फाइल्स को डाउनलोड और रन करने के लिए आपके वेबपेज लेआउट को लोड होने से रोकते हैं, जो आपकी साइट की लोड स्पीड को धीमा कर सकता है।

defer या async एट्रिब्यूट्स का उपयोग करने से ब्राउज़र लेआउट रेंडरिंग को ब्लॉक किए बिना बैकग्राउंड में स्क्रिप्ट्स डाउनलोड कर सकता है।

Note: ब्राउज़र को पहले आपके पेज का लेआउट रेंडर करने देने के लिए हमेशा अपने script टैग्स पर defer एट्रिब्यूट का उपयोग करें।
Warning: अपने head सेक्शन में भारी स्क्रिप्ट फाइलें defer या async के बिना लोड करने से आपके पेज का लोड टाइम बढ़ जाएगा और खाली सफेद स्क्रीन दिखेगी।

उदाहरण: Deferred and Async Script Loading

markup
<script src="app.js" defer></script>

Lazy Loading एसेट्स

अगर आपके वेबपेज में कई इमेजेज़ हैं, तो उन सभी को एक साथ डाउनलोड करना आपकी साइट की लोड स्पीड को धीमा कर सकता है। loading="lazy" एट्रिब्यूट ब्राउज़र को यह निर्देश देता है कि पेज में नीचे मौजूद इमेजेज़ को तब तक डाउनलोड न करे जब तक यूज़र उनके पास स्क्रॉल न कर ले।

Note: फोल्ड से नीचे मौजूद सभी इमेजेज़ के लिए lazy loading का उपयोग करें, लेकिन इसे पेज के सबसे ऊपर मौजूद अपनी hero इमेजेज़ पर लागू न करें।
Warning: viewport में दिख रही इमेजेस पर lazy loading लगाने से initial रेंडरिंग टाइम बढ़ सकता है और आपका web vitals स्कोर कम हो सकता है।

उदाहरण: Lazy Loading Assets

markup
<img src="offscreen.jpg" alt="Offscreen image" loading="lazy">

Pre-fetching और Resource Hints

पेज ट्रांज़िशन्स को तुरंत महसूस कराने के लिए, आप अपने head में link टैग्स के अंदर resource hints (जैसे dns-prefetch या preload) का उपयोग कर सकते हैं, ताकि ब्राउज़र को डोमेन रिज़ॉल्व करने या ज़रूरी एसेट्स पहले से डाउनलोड करने के लिए बताया जा सके।

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

उदाहरण: Pre-fetching and Resource Hints

markup
<link rel="dns-prefetch" href="https://fonts.example.com">
<link rel="preload" href="logo.png" as="image">

Cumulative Layout Shifts को कम करना

जब कोई इमेज लोड होती है, तो उसे डाउनलोड होने में कुछ सेकंड लगते हैं। अगर आप उसकी width और height नहीं बताते, तो ब्राउज़र को यह पता नहीं होता कि कितनी जगह रिज़र्व करनी है, जिससे पेज लेआउट इधर-उधर उछलने लगता है।

इन डायमेंशन्स को स्पष्ट रूप से सेट करना ब्राउज़र को पहले से बताता है कि कितनी जगह पहले ही रिज़र्व कर लेनी है।

Note: अपने image टैग्स के अंदर हमेशा नेटिव aspect ratio वाली width और height कोऑर्डिनेट्स बताएँ।
Warning: इमेज डाइमेंशन्स तय न करने से layout shifting होती है, जिससे Google पर आपका Core Web Vitals स्कोर कम हो जाता है।

उदाहरण: Minimizing Cumulative Layout Shifts

markup
<img src="photo.jpg" width="600" height="400" alt="Photo">

Core Web Vitals (LCP, FID, CLS)

Core Web Vitals तीन मेट्रिक्स हैं जिन्हें Google असली यूज़र अनुभव मापने के लिए इस्तेमाल करता है। LCP, यानी Largest Contentful Paint, यह मापता है कि सबसे बड़ा दिखने वाला एलिमेंट कितनी जल्दी लोड होता है।

FID, यानी First Input Delay, यह मापता है कि पेज यूज़र के पहले इंटरैक्शन पर कितनी जल्दी प्रतिक्रिया देता है। CLS, यानी Cumulative Layout Shift, यह मापता है कि लोड होते समय कंटेंट कितना अप्रत्याशित रूप से इधर-उधर उछलता है।

Note: इमेजेज़ पर स्पष्ट width और height सेट करना आपके CLS स्कोर को सुधारने के सबसे असरदार तरीकों में से एक है, क्योंकि यह इमेज लोड होने से पहले ही जगह रिज़र्व कर लेता है।
Warning: खराब Core Web Vitals स्कोर सिर्फ यूज़र एक्सपीरियंस ही नहीं, बल्कि सर्च इंजन रैंकिंग को भी सीधे नुकसान पहुंचा सकते हैं, क्योंकि Google इन्हें रैंकिंग सिग्नल के रूप में इस्तेमाल करता है।

उदाहरण: Core Web Vitals (LCP, FID, CLS)

markup
<img src="hero.jpg" width="1200" height="600" alt="Hero banner">

इमेज ऑप्टिमाइज़ेशन तकनीकें

सही फॉर्मैट चुनना, जैसे uncompressed PNG के बजाय WebP या AVIF, अपलोड करने से पहले इमेजेज़ को कंप्रेस करना, और डिस्प्ले साइज़ के हिसाब से उचित साइज़ वाली इमेजेज़ सर्व करना, ये सब मिलकर पेज वेट को काफी कम कर देते हैं।

ज़्यादातर वेबसाइट्स पर इमेजेज़ आमतौर पर पेज लोड टाइम में सबसे बड़ा योगदान देती हैं।

Note: बड़ी फोटोग्राफिक इमेजेज़ को WebP फॉर्मैट में बदलें, जो आमतौर पर उसी विज़ुअल क्वालिटी पर JPEG की तुलना में काफी छोटी फाइल साइज़ देता है।
Warning: पूरी रिज़ॉल्यूशन वाली कैमरा फोटो अपलोड करना, जो अक्सर कई मेगाबाइट की होती है, और उसे सिर्फ CSS से रीसाइज़ करना अब भी हर विज़िटर को पूरी ओरिजिनल फाइल डाउनलोड करने पर मजबूर करता है।

उदाहरण: Image Optimization Techniques

markup
<img src="photo.webp" alt="Compressed photo">

Minification समझाया गया

Minification, CSS और JavaScript फाइल्स से गैर-ज़रूरी कैरेक्टर्स, जैसे व्हाइटस्पेस, लाइन ब्रेक्स, और कमेंट्स हटा देता है, बिना यह बदले कि कोड असल में क्या करता है।

इससे फाइल्स छोटी और डाउनलोड करने में तेज़ हो जाती हैं, बिना पेज के व्यवहार पर असर डाले।

Note: Minification लगभग हमेशा किसी build टूल के ज़रिए अपने-आप होता है, हाथ से नहीं किया जाता — इसे अपनी build प्रोसेस में एक बार सेट करने पर ध्यान दें।
Warning: कोड को minify करने से ब्राउज़र डेवलपर टूल्स में उसे पढ़ना बहुत मुश्किल हो जाता है, इसलिए डिबगिंग के लिए हमेशा एक unminified सोर्स वर्ज़न रखें।

उदाहरण: Minification Explained

markup
<link rel="stylesheet" href="styles.min.css">
<script src="app.min.js"></script>

ब्राउज़र कैशिंग की बुनियादी बातें

ब्राउज़र कैशिंग विज़िटर के ब्राउज़र को पहली विज़िट के बाद इमेजेज़, CSS, और JavaScript जैसी फाइल्स लोकल रूप से स्टोर करने देती है, ताकि उसी साइट के भविष्य के पेज लोड्स सब कुछ फिर से डाउनलोड करने के बजाय उन्हें दोबारा इस्तेमाल कर सकें।

इसे सर्वर से भेजे गए Cache-Control जैसे HTTP रिस्पॉन्स हेडर्स नियंत्रित करते हैं।

Note: लोगो इमेजेज़ जैसी शायद ही कभी बदलने वाली फाइल्स के लिए लंबी cache lifetime सेट करें, और बार-बार अपडेट होने वाली फाइल्स के लिए छोटी या कोई कैशिंग न रखें।
Warning: किसी फाइल को लंबे समय के लिए cache करना और फिर उसका फाइलनेम बदले बिना उसका कंटेंट अपडेट करना, इसका मतलब है कि लौटने वाले विज़िटर्स को पुराना cached वर्ज़न ही दिखता रह सकता है।

उदाहरण: Browser Caching Basics

markup
<!-- Server response header: Cache-Control: max-age=31536000 -->
<img src="logo.png" alt="Logo">
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.