हिन्दी

छवियों और घटकों को लेज़ी लोड करने के लिए एक व्यापक गाइड, जो वैश्विक दर्शकों के लिए वेबसाइट के प्रदर्शन और उपयोगकर्ता अनुभव को बढ़ाता है।

लेज़ी लोडिंग: छवियों और घटकों के साथ वेब प्रदर्शन को अनुकूलित करना

आज के डिजिटल परिदृश्य में, वेबसाइट का प्रदर्शन सर्वोपरि है। उपयोगकर्ता तेज़, प्रतिक्रियाशील अनुभवों की अपेक्षा करते हैं, और खोज इंजन उन वेबसाइटों को प्राथमिकता देते हैं जो इसे प्रदान करती हैं। प्रदर्शन को बढ़ावा देने के लिए एक महत्वपूर्ण तकनीक लेज़ी लोडिंग है। यह लेख छवियों और घटकों की लेज़ी लोडिंग के लिए एक व्यापक गाइड प्रदान करता है, जिससे आपको वैश्विक दर्शकों के लिए अपनी वेबसाइट को अनुकूलित करने में मदद मिलती है।

लेज़ी लोडिंग क्या है?

लेज़ी लोडिंग एक ऐसी तकनीक है जो संसाधनों (छवियों, iframe, घटकों, आदि) की लोडिंग को तब तक के लिए टाल देती है जब तक कि उनकी वास्तव में आवश्यकता न हो - आम तौर पर, जब वे व्यूपोर्ट में प्रवेश करने वाले होते हैं। इसका मतलब है कि सभी संपत्तियों को अग्रिम रूप से लोड करने के बजाय, ब्राउज़र केवल उन संसाधनों को लोड करता है जो प्रारंभिक पृष्ठ लोड पर उपयोगकर्ता को दिखाई देते हैं। जैसे-जैसे उपयोगकर्ता पृष्ठ को नीचे स्क्रॉल करता है, और अधिक संसाधन दिखाई देने पर लोड हो जाते हैं।

इसे इस तरह से सोचें: एक यात्रा के लिए पैकिंग की कल्पना करें। शुरू से ही अपनी पूरी अलमारी को साथ खींचने के बजाय, आप केवल वही कपड़े पैक करते हैं जिनकी आपको तुरंत आवश्यकता होगी। जैसे-जैसे आप अपनी यात्रा पर आगे बढ़ते हैं, आप आवश्यकतानुसार अतिरिक्त वस्तुओं को अनपैक करते हैं। वेबसाइटों के लिए लेज़ी लोडिंग अनिवार्य रूप से इसी तरह काम करती है।

लेज़ी लोडिंग का उपयोग क्यों करें?

लेज़ी लोडिंग कई महत्वपूर्ण लाभ प्रदान करती है:

लेज़ी लोडिंग छवियाँ

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

नेटिव लेज़ी लोडिंग

आधुनिक ब्राउज़र (क्रोम, फ़ायरफ़ॉक्स, सफारी और एज) अब loading विशेषता का उपयोग करके नेटिव लेज़ी लोडिंग का समर्थन करते हैं। यह छवियों को लेज़ी लोड करने का सबसे सरल और सबसे कुशल तरीका है।

नेटिव लेज़ी लोडिंग को सक्षम करने के लिए, बस अपने <img> टैग में loading="lazy" विशेषता जोड़ें:

<img src="image.jpg" alt="My Image" loading="lazy">

loading विशेषता के तीन मान हो सकते हैं:

उदाहरण:

<img src="london_bridge.jpg" alt="London Bridge" loading="lazy" width="600" height="400">
<img src="tokyo_skyline.jpg" alt="Tokyo Skyline" loading="lazy" width="600" height="400">
<img src="rio_de_janeiro.jpg" alt="Rio de Janeiro" loading="lazy" width="600" height="400">

इस उदाहरण में, लंदन ब्रिज, टोक्यो स्काईलाइन और रियो डी जेनेरियो की छवियाँ तभी लोड होंगी जब उपयोगकर्ता उन तक स्क्रॉल करेगा। यह बहुत मददगार है, खासकर यदि कोई उपयोगकर्ता पृष्ठ के बिल्कुल नीचे तक स्क्रॉल नहीं करता है।

जावास्क्रिप्ट के साथ लेज़ी लोडिंग

पुराने ब्राउज़रों के लिए जो नेटिव लेज़ी लोडिंग का समर्थन नहीं करते हैं, आप जावास्क्रिप्ट लाइब्रेरी का उपयोग कर सकते हैं या अपना स्वयं का कस्टम स्क्रिप्ट लिख सकते हैं। यहाँ इंटरसेक्शन ऑब्जर्वर एपीआई का उपयोग करके एक मूल उदाहरण दिया गया है:

const images = document.querySelectorAll('img[data-src]');

const observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      img.removeAttribute('data-src');
      observer.unobserve(img);
    }
  });
});

images.forEach(img => {
  observer.observe(img);
});

स्पष्टीकरण:

  1. हम उन सभी <img> तत्वों का चयन करते हैं जिनमें data-src विशेषता है।
  2. हम एक नया IntersectionObserver इंस्टेंस बनाते हैं। कॉलबैक फ़ंक्शन तब निष्पादित होता है जब एक प्रेक्षित तत्व व्यूपोर्ट में प्रवेश करता है या बाहर निकलता है।
  3. कॉलबैक फ़ंक्शन के अंदर, हम entries (वे तत्व जो व्यूपोर्ट को काट चुके हैं) पर पुनरावृति करते हैं।
  4. यदि कोई तत्व प्रतिच्छेद कर रहा है (entry.isIntersecting सत्य है), तो हम छवि की src विशेषता को data-src विशेषता के मान पर सेट करते हैं।
  5. फिर हम data-src विशेषता को हटा देते हैं और छवि का निरीक्षण करना बंद कर देते हैं, क्योंकि अब इसकी आवश्यकता नहीं है।
  6. अंत में, हम observer.observe(img) का उपयोग करके प्रत्येक छवि का निरीक्षण करते हैं।

HTML संरचना:

<img data-src="image.jpg" alt="My Image">

ध्यान दें कि वास्तविक छवि URL को src विशेषता के बजाय data-src विशेषता में रखा गया है। यह ब्राउज़र को तुरंत छवि लोड करने से रोकता है।

लेज़ी लोडिंग लाइब्रेरी का उपयोग करना

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

ये लाइब्रेरी आमतौर पर लेज़ी लोडिंग को शुरू करने के लिए एक सरल एपीआई प्रदान करती हैं और प्लेसहोल्डर छवियों और संक्रमण प्रभावों जैसी अतिरिक्त सुविधाएँ प्रदान करती हैं।

लेज़ी लोडिंग घटक

लेज़ी लोडिंग केवल छवियों के लिए नहीं है; इसे घटकों पर भी लागू किया जा सकता है, विशेष रूप से रिएक्ट, एंगुलर और व्यू जैसे आधुनिक जावास्क्रिप्ट फ्रेमवर्क में। यह विशेष रूप से कई घटकों वाले बड़े एकल-पृष्ठ अनुप्रयोगों (SPAs) के लिए उपयोगी है।

रिएक्ट में लेज़ी लोडिंग

रिएक्ट घटकों को लेज़ी लोड करने के लिए एक अंतर्निहित React.lazy() फ़ंक्शन प्रदान करता है। यह फ़ंक्शन आपको घटकों को गतिशील रूप से आयात करने की अनुमति देता है, जो तब केवल तभी लोड होते हैं जब उन्हें प्रस्तुत किया जाता है।

import React, { Suspense } from 'react';

const MyComponent = React.lazy(() => import('./MyComponent'));

function App() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <MyComponent />
    </Suspense>
  );
}

export default App;

स्पष्टीकरण:

  1. हम MyComponent को गतिशील रूप से आयात करने के लिए React.lazy() का उपयोग करते हैं। import() फ़ंक्शन एक वादा लौटाता है जो घटक मॉड्यूल में हल हो जाता है।
  2. हम MyComponent को एक <Suspense> घटक में लपेटते हैं। Suspense घटक आपको एक फॉलबैक यूआई (इस मामले में, "Loading...") प्रदर्शित करने की अनुमति देता है, जबकि घटक लोड हो रहा है।

एंगुलर में लेज़ी लोडिंग

एंगुलर रूटिंग कॉन्फ़िगरेशन में loadChildren गुण का उपयोग करके मॉड्यूल की लेज़ी लोडिंग का समर्थन करता है।

const routes: Routes = [
  {
    path: 'my-module',
    loadChildren: () => import('./my-module/my-module.module').then(m => m.MyModuleModule)
  }
];

स्पष्टीकरण:

  1. हम my-module पथ के लिए एक रूट परिभाषित करते हैं।
  2. हम यह निर्दिष्ट करने के लिए loadChildren गुण का उपयोग करते हैं कि MyModuleModule को लेज़ी लोड किया जाना चाहिए। import() फ़ंक्शन गतिशील रूप से मॉड्यूल आयात करता है।
  3. then() विधि का उपयोग मॉड्यूल तक पहुंचने और MyModuleModule वर्ग को वापस करने के लिए किया जाता है।

Vue.js में लेज़ी लोडिंग

Vue.js गतिशील आयात और component टैग का उपयोग करके घटकों की लेज़ी लोडिंग का समर्थन करता है।

<template>
  <component :is="dynamicComponent"></component>
</template>

<script>
export default {
  data() {
    return {
      dynamicComponent: null
    }
  },
  mounted() {
    import('./MyComponent.vue')
      .then(module => {
        this.dynamicComponent = module.default
      })
  }
}
</script>

स्पष्टीकरण:

  1. हम एक घटक को गतिशील रूप से प्रस्तुत करने के लिए :is विशेषता के साथ <component> टैग का उपयोग करते हैं।
  2. mounted जीवनचक्र हुक में, हम MyComponent.vue को गतिशील रूप से आयात करने के लिए import() फ़ंक्शन का उपयोग करते हैं।
  3. फिर हम dynamicComponent डेटा प्रॉपर्टी को मॉड्यूल के डिफ़ॉल्ट निर्यात पर सेट करते हैं।

लेज़ी लोडिंग के लिए सर्वोत्तम अभ्यास

यह सुनिश्चित करने के लिए कि लेज़ी लोडिंग प्रभावी ढंग से लागू हो, इन सर्वोत्तम प्रथाओं पर विचार करें:

अंतर्राष्ट्रीयकरण संबंधी विचार

वैश्विक दर्शकों के लिए लेज़ी लोडिंग लागू करते समय, इन अंतर्राष्ट्रीयकरण कारकों पर विचार करें:

निष्कर्ष

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

लेज़ी लोडिंग को अपनाएं और सभी के लिए एक तेज़, अधिक कुशल और उपयोगकर्ता-अनुकूल वेब अनुभव को अनलॉक करें।