वर्कबॉक्स-नेविगेशन-प्रीलोड

"नेविगेशन प्रीलोड की मदद से, सर्विस वर्कर की स्पीड बढ़ाना" लेख में, नेविगेशन प्रीलोड के बारे में बेहतर तरीके से बताया गया है. साथ ही, यह भी बताया गया है कि यह वेब ऐप्लिकेशन के लिए क्या फ़ायदे देता है जिनके सर्विस वर्कर, नेविगेशन अनुरोधों को साफ़ तौर पर मैनेज नहीं करते.

यह मॉड्यूल क्या करता है?

workbox-navigation-preload, रनटाइम पर यह जांच करेगा कि मौजूदा ब्राउज़र, नेविगेशन प्रीलोड की सुविधा के साथ काम करता है या नहीं. अगर ऐसा है, तो इसे चालू करने के लिए activate इवेंट हैंडलर अपने-आप बन जाएगा.

workbox-core में मौजूद शेयर किया गया कोड, Workbox के सभी वर्शन में नेटवर्क अनुरोधों को मैनेज करता है. इसे भी अपडेट किया गया है, ताकि अगर प्रीलोड रिस्पॉन्स उपलब्ध हो, तो इसका फ़ायदा अपने-आप मिल सके. इसका मतलब है कि नेविगेशन प्रीलोड की सुविधा चालू होने के बाद, पहले से मौजूद कोई भी रणनीति अपने-आप इसका फ़ायदा ले सकती है.

नेविगेशन प्रीलोड की सुविधा किसे चालू करनी चाहिए?

जिन डेवलपर ने पहले से ही, पहले से कैश मेमोरी में सेव किए गए एचटीएमएल (संभावित रूप से, ऐप्लिकेशन शेल फ़ॉलबैक के साथ कॉन्फ़िगर किया गया) का इस्तेमाल करके नेविगेशन मैनेज कर लिए हैं उन्हें नेविगेशन प्रीलोड करने की सुविधा चालू करने की ज़रूरत नहीं है! इस सुविधा का मकसद, उन डेवलपर के लिए नेविगेशन में लगने वाले समय को कम करना है जो अपने एचटीएमएल को पहले से कैश मेमोरी में सेव नहीं कर सकते. हालांकि, वे अपनी साइटों पर मौजूद अन्य एसेट को कैश मेमोरी में सेव करने के लिए, Workbox का इस्तेमाल करना चाहते हैं.

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

बुनियादी इस्तेमाल

import * as navigationPreload from 'workbox-navigation-preload';
import {NetworkFirst} from 'workbox-strategies';
import {registerRoute, NavigationRoute} from 'workbox-routing';

// Enable navigation preload.
navigationPreload.enable();

// Swap in NetworkOnly, CacheFirst, or StaleWhileRevalidate as needed.
const strategy = new NetworkFirst({
  cacheName: 'cached-navigations',
  plugins: [
    // Any plugins, like `ExpirationPlugin`, etc.
  ],
});

const navigationRoute = new NavigationRoute(strategy, {
  // Optionally, provide a allow/denylist of RegExps to determine
  // which paths will match this route.
  // allowlist: [],
  // denylist: [],
});

registerRoute(navigationRoute);

ब्राउज़र के लिए सहायता की सुविधा कैसी है?

फ़िलहाल, Google Chrome ही ऐसा ब्राउज़र है जो नेविगेशन प्रीलोड की सुविधा के साथ काम करता है. enable(), रनटाइम के दौरान ब्राउज़र के साथ काम करने की जांच करेगा. साथ ही, नेविगेशन प्रीलोड की सुविधा सिर्फ़ तब चालू करेगा, जब मौजूदा ब्राउज़र पर यह काम करती हो. इसलिए, अपने सर्विस वर्कर में बिना किसी शर्त के enable() को कॉल करना सुरक्षित है.

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

तरीके

disable()

workbox-navigation-preload.disable()

अगर ब्राउज़र पर नेविगेशन प्रीलोड की सुविधा काम करती है, तो यह इसे बंद कर देगा.

enable()

workbox-navigation-preload.enable(
  headerValue?: string,
)

अगर ब्राउज़र पर नेविगेशन प्रीलोड की सुविधा काम करती है, तो यह इसे चालू कर देगा.

पैरामीटर

  • headerValue

    स्ट्रिंग ज़रूरी नहीं है

isSupported()

workbox-navigation-preload.isSupported()

रिटर्न

  • बूलियन

    मौजूदा ब्राउज़र पर नेविगेशन प्रीलोड की सुविधा चालू की जा सकती है या नहीं.