First Contentful Paint (FCP)

ब्राउज़र के इस्तेमाल से जुड़ी सहायता

  • Chrome: 60.
  • Edge: 79.
  • Firefox: 84.
  • Safari: 14.1.

सोर्स

फ़र्स्ट कॉन्टेंटफ़ुल पेंट (FCP) से, यह पता चलता है कि उपयोगकर्ता के पेज पर जाने से लेकर, स्क्रीन पर उसके कॉन्टेंट को रेंडर करने में कितना समय लगा. इस मेट्रिक के लिए, "कॉन्टेंट" का मतलब टेक्स्ट, इमेज (इसमें बैकग्राउंड इमेज भी शामिल हैं), <svg> एलिमेंट या सफ़ेद रंग के अलावा किसी दूसरे रंग के <canvas> एलिमेंट से है.

google.com पर एफ़सीपी की टाइमलाइन
इस लोड टाइमलाइन में, एफ़सीपी दूसरे फ़्रेम में होता है, क्योंकि तब स्क्रीन पर पहला टेक्स्ट और इमेज एलिमेंट रेंडर होता है.

ऊपर दी गई इमेज में दिखाई गई लोडिंग टाइमलाइन में, FCP दूसरे फ़्रेम में होता है. ऐसा इसलिए होता है, क्योंकि स्क्रीन पर पहला टेक्स्ट और इमेज एलिमेंट तब रेंडर होता है.

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

अच्छा एफ़सीपी स्कोर क्या होता है?

उपयोगकर्ताओं को अच्छा अनुभव देने के लिए, यह ज़रूरी है कि साइटों का फ़र्स्ट कॉन्टेंटफ़ुल पेंट 1.8 सेकंड या उससे कम हो. यह पक्का करने के लिए कि आपके ज़्यादातर उपयोगकर्ताओं के लिए यह टारगेट पूरा हो रहा है, पेज लोड के 75वें प्रतिशत को मेज़र करना एक अच्छा थ्रेशोल्ड है. इसे मोबाइल और डेस्कटॉप डिवाइसों के हिसाब से सेगमेंट किया जाता है.

एफ़सीपी की अच्छी वैल्यू 1.8 सेकंड या उससे कम होती हैं. खराब वैल्यू 3.0 सेकंड से ज़्यादा होती हैं. इन दोनों वैल्यू के बीच की वैल्यू में सुधार की ज़रूरत होती है
अच्छी एफ़सीपी वैल्यू 1.8 सेकंड या उससे कम होती हैं. खराब वैल्यू 3.0 सेकंड से ज़्यादा हैं

एफ़सीपी मेज़र करने का तरीका

एफ़सीपी को लैब में या फ़ील्ड में मेज़र किया जा सकता है. यह इन टूल में उपलब्ध है:

फ़ील्ड टूल

लैब टूल

JavaScript में एफ़सीपी मेज़र करना

JavaScript में एफ़सीपी मेज़र करने के लिए, Paint Timing API का इस्तेमाल किया जा सकता है. यहां दिए गए उदाहरण में, first-contentful-paint नाम वाली paint एंट्री को सुनने और उसे कंसोल में लॉग करने वाला PerformanceObserver बनाने का तरीका बताया गया है.

new PerformanceObserver((entryList) => {
  for (const entry of entryList.getEntriesByName('first-contentful-paint')) {
    console.log('FCP candidate:', entry.startTime, entry);
  }
}).observe({type: 'paint', buffered: true});

पिछले कोड स्निपेट में, लॉग की गई first-contentful-paint एंट्री से आपको पता चलेगा कि कॉन्टेंट वाला पहला एलिमेंट कब पेंट किया गया था. हालांकि, कुछ मामलों में यह एंट्री, एफ़सीपी को मेज़र करने के लिए मान्य नहीं होती.

नीचे दिए गए सेक्शन में, एपीआई की रिपोर्ट और मेट्रिक के हिसाब लगाने के तरीके के बीच के अंतर की जानकारी दी गई है.

मेट्रिक और एपीआई के बीच अंतर

  • एपीआई, बैकग्राउंड टैब में लोड किए गए पेजों के लिए first-contentful-paint एंट्री भेजेगा. हालांकि, एफ़सीपी का हिसाब लगाते समय उन पेजों को अनदेखा किया जाना चाहिए. फ़र्स्ट पेंट टाइमिंग का इस्तेमाल सिर्फ़ तब किया जाना चाहिए, जब पेज पूरे समय फ़ोरग्राउंड में हो.
  • जब पेज को बैक/फ़ॉरवर्ड कैश से वापस लाया जाता है, तो एपीआई first-contentful-paint एंट्री की रिपोर्ट नहीं करता. हालांकि, इन मामलों में एफ़सीपी को मेज़र किया जाना चाहिए, क्योंकि उपयोगकर्ताओं को यह अलग-अलग पेज विज़िट के तौर पर दिखता है.
  • हो सकता है कि एपीआई क्रॉस-ऑरिजिन iframes से पेंटिंग टाइमिंग की रिपोर्ट न कर पाए. हालांकि, एफ़सीपी को सही तरीके से मेज़र करने के लिए, आपको सभी फ़्रेम को ध्यान में रखना चाहिए. एग्रीगेशन के लिए, पैरंट फ़्रेम को पेंट करने में लगने वाले समय की जानकारी देने के लिए, सब-फ़्रेम एपीआई का इस्तेमाल कर सकते हैं.
  • एपीआई, नेविगेशन शुरू होने से एफ़सीपी को मेज़र करता है. हालांकि, पहले से रेंडर किए गए पेजों के लिए, एफ़सीपी को activationStart से मेज़र किया जाना चाहिए, क्योंकि यह एफ़सीपी के उस समय से मेल खाता है जो उपयोगकर्ता को दिखता है.

इन सभी छोटे अंतरों को याद रखने के बजाय, डेवलपर एफ़सीपी को मेज़र करने के लिए web-vitals JavaScript लाइब्रेरी का इस्तेमाल कर सकते हैं. यह लाइब्रेरी, जहां भी हो सके वहां इन अंतरों को मैनेज करती है. ध्यान दें कि iframe से जुड़ी समस्या को शामिल नहीं किया गया है:

import {onFCP} from 'web-vitals';

// Measure and log FCP as soon as it's available.
onFCP(console.log);

JavaScript में एफ़सीपी को मेज़र करने के तरीके का पूरा उदाहरण देखने के लिए, onFCP() के सोर्स कोड को देखें.

एफ़सीपी को बेहतर बनाने का तरीका

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

किसी भी साइट के लिए, एफ़सीपी को बेहतर बनाने का तरीका जानने के लिए, परफ़ॉर्मेंस से जुड़ी ये गाइड देखें:

बदलावों का लॉग

कभी-कभी, मेट्रिक को मेज़र करने के लिए इस्तेमाल किए जाने वाले एपीआई में गड़बड़ियां मिलती हैं. साथ ही, कभी-कभी मेट्रिक की परिभाषाओं में भी गड़बड़ियां मिलती हैं. इसलिए, कभी-कभी बदलाव करना ज़रूरी होता है. ये बदलाव, आपकी इंटरनल रिपोर्ट और डैशबोर्ड में सुधार या गिरावट के तौर पर दिख सकते हैं.

इसे मैनेज करने में आपकी मदद करने के लिए, इन मेट्रिक को लागू करने या उनकी परिभाषा में किए गए सभी बदलाव, इस बदलावों की सूची में दिखाए जाएंगे.

अगर आपको इन मेट्रिक के बारे में कोई सुझाव, शिकायत या राय देनी है, तो web-vitals-feedback Google ग्रुप में जाकर ऐसा किया जा सकता है.