Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

Redis कैशिंग के साथ Next.js प्रदर्शन बढ़ाएं

Next.js एक बहुत सफल वेब फ्रेमवर्क है जो सर्वर-साइड रेंडरिंग और स्टैटिक साइट जनरेशन को एक साथ लाता है। SSG CDN कैशिंग की बदौलत आपकी वेबसाइट को गति देता है जबकि SSR SEO और डायनामिक डेटा के साथ आपकी मदद करता है।

सर्वर-साइड रेंडरिंग एक बेहतरीन फीचर है जो आपको फुल-स्टैक एप्लिकेशन लिखने में मदद करता है। लेकिन यदि आप सावधान नहीं हैं, तो आपके Next.js वेबसाइट का प्रदर्शन आसानी से प्रभावित हो सकता है। इस ब्लॉग पोस्ट में, मैं समझाऊंगा कि Next.js API कॉल को तेज करने के लिए Redis का लाभ कैसे उठाया जाए। उससे पहले मैं प्रदर्शन में सुधार का एक सरल तरीका संक्षेप में बताऊंगा।

अपने API कॉल्स पर SWR का उपयोग करें

SWR एक बहुत स्मार्ट डेटा फेचिंग लाइब्रेरी है। यह HTTP RFC 5861 द्वारा वर्णित HTTP कैश अमान्यकरण रणनीति (stale-while-revalidate) का उपयोग करता है। जब आप SWR के साथ API कॉल करते हैं, तो यह तुरंत कैश्ड डेटा लौटाता है लेकिन एसिंक्रोनस रूप से वर्तमान डेटा लाता है और आपके UI को अपडेट करता है। आप अपनी स्टेलनेस सहनशीलता के आधार पर refreshInterval भी सेट कर सकते हैं।

const { data: user } = useSWR('/api/user', { refreshInterval: 2000 })

उपरोक्त कोड में, यूजर API हर 2 सेकंड में रीफ्रेश होगा।

Redis के साथ कैशिंग

SWR बहुत सरल और प्रभावी है। लेकिन ऐसे मामले हैं जहां आपको सर्वर-साइड कैशिंग की आवश्यकता होगी:

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

उदाहरण प्रोजेक्ट: कोविड ट्रैकर

इस प्रोजेक्ट में, हम Javier Aviles के कोविड API का उपयोग करेंगे और आज के मामलों की संख्या के साथ शीर्ष 10 देशों को खोजेंगे। वेबसाइट देखें और सोर्स कोड देखें।

हम Covid API से प्रतिक्रियाओं को कैश करने के लिए Redis का उपयोग करेंगे ताकि:

  • प्रतिक्रिया बहुत तेज़ होगी। यदि आप वेबसाइट देखें, तो आप देखेंगे कि Covid API को कॉल करने में सैकड़ों मिलीसेकंड लगते हैं जबकि Redis से फेच करने में 1-2 मिलीसेकंड लगते हैं।
  • हम Covid API को बहुत सारे अनुरोधों से अभिभूत नहीं करेंगे।

API कोड

कोड पहले जांचता है कि क्या हमारे पास Redis में API परिणाम कैश्ड है। यदि नहीं, तो हम Covid API से सभी देशों की सूची प्राप्त करेंगे और उन्हें वर्तमान दिन के मामलों की संख्या के अनुसार सॉर्ट करेंगे और शीर्ष 10 को Redis में सहेजेंगे। Redis में सहेजते समय, हम "EX" 60 पैरामीटर सेट करते हैं जिसका अर्थ है कि Redis 60 सेकंड में एंट्री को हटा देगा।

import Redis from "ioredis";
let redis = new Redis(process.env.REDIS_URL);
export default async (req, res) => {
  let start = Date.now();
  let cache = await redis.get("cache");
  cache = JSON.parse(cache);
  let result = {};
  if (cache) {
    console.log("loading from cache");
    result.data = cache;
    result.type = "redis";
    result.latency = Date.now() - start;
    return res.status(200).json(result);
  } else {
    console.log("loading from api");
    start = Date.now();
    return fetch("https://coronavirus-19-api.herokuapp.com/countries")
      .then((r) => r.json())
      .then((data) => {
        data.sort(function (a, b) {
          return b.todayCases - a.todayCases;
        });
        result.data = data.splice(1, 11);
        result.type = "api";
        result.latency = Date.now() - start;
        redis.set("cache", JSON.stringify(result.data), "EX", 60);
        return res.status(200).json(result);
      });
  }
};

UI कोड

UI एक सरल React कोड है। हम SWR का उपयोग करके API से डेटा फेच करते हैं।

export default function Home() {
  function refresh(e) {
    e.preventDefault();
    window.location.reload();
  }
  const { data, error } = useSWR("api/data", fetcher);
  if (error) return "An error has occurred.";
  if (!data) return "Loading...";
  return (
    
Covid Tracker

Covid Tracker

Top 10 countries with the most cases today

{data.data.map((item) => ( ))}
Country Today Cases Today Deaths
{item.country} {item.todayCases} {item.todayDeaths}

Loaded from {data.type} in {data.latency} milliseconds. Click to reload.
); }
  1. पाइपलाइन REST API के साथ सर्वरलेस Redis एक्सेस को बढ़ाएं पाइपलाइन REST API के साथ सर्वरलेस Redis एक्सेस को बढ़ाएं

    Upstash नेटिव Redis API के अलावा REST API का समर्थन करता है। REST API डेवलपर्स को सर्वरलेस और एज फ़ंक्शंस से कनेक्शन समस्याओं के बिना अपने Redis तक पहुंचने में मदद करता है। लेकिन यदि आप एक ही फ़ंक्शन में कई Redis कमांड निष्पादित करते हैं तो इसका मतलब है कि आप डेटाबेस को कई बार कॉल करेंगे। हमारे समुद

  1. Cloudflare Workers के साथ एज पर Redis की शक्ति का उपयोग करें Cloudflare Workers के साथ एज पर Redis की शक्ति का उपयोग करें

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

  1. अपनी विंडोज गति बढ़ाएं: तेज़ PC के लिए MSCONFIG में महारत हासिल करें अपनी विंडोज गति बढ़ाएं: तेज़ PC के लिए MSCONFIG में महारत हासिल करें

    हमारी राय में यह विंडोज के लिए अब तक का सबसे अच्छा कमांड है। MSCONFIG विंडोज के पिछले संस्करणों में रहा है और अभी भी विंडोज 10 में मौजूद है, उन स्पष्ट कारणों के लिए जिन्हें आप इस लेख को पढ़ते समय समझेंगे। MSCONFIG के साथ PC को गति देने का तरीका जानें! MSCONFIG क्यों उपयोगी है? आप MSCONFIG से कई च