क्रिटिकल के साथ क्रिटिकल सीएसएस एक्सट्रैक्ट करें और इनलाइन करें

चाहे आप किसी यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी का इस्तेमाल करें या अपनी स्टाइल को हैंडक्राफ़्ट करें, आपको सीएसएस को रेंडर करने में काफ़ी देरी हो सकती है. इसकी वजह यह है कि पेज दिखाने से पहले ब्राउज़र को सीएसएस फ़ाइलें डाउनलोड और पार्स करनी होती हैं.

आइसक्रीम की यह रिस्पॉन्सिव गैलरी, Bootstrap की मदद से बनाई गई है. बूटस्ट्रैप जैसी यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी डेवलपमेंट की रफ़्तार को बढ़ा देती हैं, लेकिन इसकी वजह अक्सर ज़्यादा सीएसएस की वजह से हो जाती है, जिससे आपका लोड समय कम हो सकता है. बूटस्ट्रैप 4 का साइज़ 187 केबी है. वहीं, एक और यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी, सिमैंटिक यूज़र इंटरफ़ेस (यूआई) का साइज़, 730 केबी का है, जिसे कंप्रेस किया गया है. छोटी की गई और gzip करने के बाद भी, बूटस्ट्रैप का वज़न करीब 20 केबी होता है. यह पहली दोतरफ़ा यात्रा के लिए 14 केबी थ्रेशोल्ड से भी ज़्यादा होता है.

ज़रूरी एक ऐसा टूल है जो फ़ोल्ड के ऊपर मौजूद सीएसएस को निकालता है, छोटा करता है, और इनलाइन करता है. इससे पेज के ऊपरी हिस्से पर मौजूद कॉन्टेंट को जल्द से जल्द रेंडर किया जा सकता है. भले ही, पेज के अन्य हिस्सों के लिए सीएसएस अभी तक लोड न हुई हो. इस कोडलैब में, आपको Critical के npm मॉड्यूल का इस्तेमाल करने का तरीका पता चलेगा.

मापें

  • साइट की झलक देखने के लिए, ऐप्लिकेशन देखें दबाएं. इसके बाद, फ़ुलस्क्रीनफ़ुलस्क्रीन दबाएं.

इस साइट पर Lighthouse ऑडिट चलाने के लिए:

  1. DevTools खोलने के लिए, `Control+Shift+J` दबाएं. Mac पर, `Command+Option+J` दबाएं.
  2. Lighthouse टैब पर क्लिक करें.
  3. मोबाइल पर क्लिक करें.
  4. परफ़ॉर्मेंस चेकबॉक्स चुनें.
  5. ऑडिट सेक्शन में, बाकी चेकबॉक्स से सही का निशान हटाएं.
  6. सिमुलेटेड फ़ास्ट 3G, 4x सीपीयू स्लोडाउन पर क्लिक करें.
  7. स्टोरेज खाली करें चेकबॉक्स को चुनें. इस विकल्प को चुनने पर, Lighthouse कैश मेमोरी से संसाधन लोड नहीं करेगा. इससे यह पता चलता है कि पहली बार आने वाले लोगों को पेज कैसा दिखेगा.
  8. ऑडिट चलाएं पर क्लिक करें.

Lighthouse की मदद से काम करने वाला, Chrome DevTools का ऑडिट पैनल

मशीन पर ऑडिट करने पर, सटीक नतीजे अलग-अलग हो सकते हैं. हालांकि, फ़िल्मस्ट्रिप व्यू में आपको दिखेगा कि कॉन्टेंट को रेंडर करने से पहले, ऐप्लिकेशन में काफ़ी देर तक खाली स्क्रीन दिखती है. यही वजह है कि फ़र्स्ट कॉन्टेंटफ़ुल पेंट (एफ़सीपी) का स्कोर ज़्यादा है और परफ़ॉर्मेंस का कुल स्कोर अच्छा नहीं है.

लाइटहाउस ऑडिट, जिसमें परफ़ॉर्मेंस स्कोर 84, एफ़सीपी 3 सेकंड, और ऐप्लिकेशन लोड होने की फ़िल्मस्ट्रिप व्यू दिख रही है

Lighthouse, परफ़ॉर्मेंस से जुड़ी समस्याओं को ठीक करने में आपकी मदद करता है. इसलिए, अवसर सेक्शन में समाधान देखें. रेंडर ब्लॉक करने वाले रिसॉर्स हटाना को अवसर के तौर पर लिस्ट किया गया है. यहां क्रिटिकल की भूमिका अहम है!

लाइटहाउस ऑडिट के 'अवसर' सेक्शन में, 'रेंडर ब्लॉक करने वाले रिसॉर्स हटाएं' लिस्टिंग

Optimize

  • प्रोजेक्ट में बदलाव करने के लिए, बदलाव करने के लिए रीमिक्स करें पर क्लिक करें.

प्रोसेस को तेज़ करने के लिए, Critical पहले से ही इंस्टॉल है और कोडलैब में एक खाली कॉन्फ़िगरेशन फ़ाइल शामिल है.

कॉन्फ़िगरेशन फ़ाइल critical.js में, क्रिटिकल का रेफ़रंस जोड़ें. इसके बाद, critical.generate() फ़ंक्शन शुरू करें. यह फ़ंक्शन, कॉन्फ़िगरेशन वाले ऑब्जेक्ट को स्वीकार करता है.

const critical = require('critical');

critical.generate({
    // configuration
},(err, output) => {
  if (err) {
    console.error(err);
  } else if (output) {
    console.log('Generated critical CSS');
  }
});

गड़बड़ी को मैनेज करना ज़रूरी नहीं है. हालांकि, इससे कंसोल में ऑपरेशन के सही तरीके से होने का पता लगाना आसान हो जाता है.

'गंभीर' को कॉन्फ़िगर करना

नीचे दी गई टेबल में, अहम विकल्पों के कुछ अहम विकल्प दिए गए हैं. GitHub पर उपलब्ध सभी विकल्प देखे जा सकते हैं.

विकल्प टाइप जानकारी
base स्ट्रिंग आपकी फ़ाइलों की मुख्य डायरेक्ट्री.
src स्ट्रिंग एचटीएमएल सोर्स फ़ाइल.
dest स्ट्रिंग आउटपुट फ़ाइल का टारगेट. अगर सीएसएस इनलाइन है, तो आउटपुट फ़ाइल एचटीएमएल है. अगर ऐसा नहीं है, तो आउटपुट एक CSS फ़ाइल है.
width, height नंबर पिक्सल में व्यूपोर्ट की चौड़ाई और ऊंचाई.
dimensions श्रेणी इसमें चौड़ाई और ऊंचाई प्रॉपर्टी वाले ऑब्जेक्ट शामिल होते हैं. ये ऑब्जेक्ट उन व्यूपोर्ट को दिखाते हैं जिन्हें आपको फ़ोल्ड के ऊपर मौजूद सीएसएस से टारगेट करना है. अगर आपकी सीएसएस में मीडिया क्वेरी हैं, तो इससे आपको ज़रूरी सीएसएस जनरेट करने में मदद मिलती है. यह सीएसएस, व्यूपोर्ट के कई साइज़ को कवर करती है.
inline बूलियन अगर नीति को 'सही है' पर सेट किया जाता है, तो जनरेट किया गया अहम सीएसएस, एचटीएमएल सोर्स फ़ाइल की लाइन में दिखता है.
minify बूलियन 'सही है' पर सेट होने पर, क्रिटिकल, जनरेट की गई क्रिटिकल सीएसएस को छोटा कर देता है. एक से ज़्यादा रिज़ॉल्यूशन के लिए क्रिटिकल सीएसएस निकालते समय, इसे छोड़ा जा सकता है. ऐसा इसलिए, क्योंकि डुप्लीकेट नियम को शामिल करने से बचने के लिए, क्रिटिकल अपने-आप छोटा हो जाता है.

यहां एक से ज़्यादा रिज़ॉल्यूशन के लिए, क्रिटिकल सीएसएस निकालने के कॉन्फ़िगरेशन का उदाहरण दिया गया है. इसे critical.js में जोड़ें या विकल्पों को आज़माकर उनमें बदलाव करें.

critical.generate({
  base: 'public/',
  src: './index.html',
  dest: './index.html',
  inline: true,
  dimensions: [
    {
      height: 500,
      width: 300,
    },
    {
      height: 720,
      width: 1280,
    },
  ]
}, (err, output) => {
  if (err) {
    console.error(err);
  } else if (output) {
    console.log('Generated critical CSS');
  }
});

इस उदाहरण में, index.html सोर्स फ़ाइल और डेस्टिनेशन फ़ाइल, दोनों है, क्योंकि inline विकल्प 'सही' पर सेट है. क्रिटिकल सबसे पहले एचटीएमएल सोर्स फ़ाइल को पढ़ता है, ज़रूरी सीएसएस को निकालता है, और फिर <head> में इनलाइन की गई ज़रूरी सीएसएस के साथ index.html को ओवरराइट करता है.

dimensions कलेक्शन में दो व्यूपोर्ट साइज़ तय किए गए हैं: बहुत छोटी स्क्रीन के लिए 300 x 500 और स्टैंडर्ड लैपटॉप स्क्रीन के लिए 1280 x 720.

minify विकल्प को छोड़ दिया गया है, क्योंकि व्यूपोर्ट के एक से ज़्यादा साइज़ तय होने पर 'ज़रूरी', एक्सट्रैक्ट किए गए सीएसएस को अपने-आप छोटा कर देता है.

Run Critical

package.json में अपनी स्क्रिप्ट में ज़रूरी जोड़ें:

scripts: {
  "start": "node server.js",
  "critical": "node critical.js"
}
  1. Terminal पर क्लिक करें (ध्यान दें: अगर Terminal बटन नहीं दिखता है, तो आपको फ़ुलस्क्रीन विकल्प का इस्तेमाल करना पड़ सकता है).

क्रिटिकल सीएसएस जनरेट करने के लिए, कंसोल में यह कमांड चलाएं:

npm run critical
refresh
कंसोल में &#39;ज़रूरी सीएसएस जनरेट की गई&#39; मैसेज
कंसोल में, 'कार्रवाई पूरी हो गई' मैसेज

अब index.html के <head> टैग में, जनरेट की गई ज़रूरी सीएसएस को <style> टैग के बीच इनलाइन किया गया है. इसके बाद, एक स्क्रिप्ट है जो बाकी सीएसएस को एसिंक्रोनस तरीके से लोड करती है.

ज़रूरी सीएसएस को इनलाइन करके बनाया गया index.html
ज़रूरी सीएसएस को इनलाइन करना

फिर से मापें

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

Lighthouse ऑडिट में, परफ़ॉर्मेंस का स्कोर 100, एफ़सीपी 0.9 सेकंड, और ऐप्लिकेशन लोड होने के बेहतर फ़िल्मस्ट्रिप व्यू की जानकारी