മലയാളം

Next.js എഡ്ജ് കോൺഫിഗ് കണ്ടെത്തുക: വേഗതയിലും കാര്യക്ഷമതയിലും കോൺഫിഗറേഷൻ ആഗോളതലത്തിൽ വിതരണം ചെയ്യാനുള്ള ശക്തമായ പരിഹാരം. എഡ്ജിൽ ഡൈനാമിക് കോൺഫിഗറേഷൻ ഉപയോഗിച്ച് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ എങ്ങനെ ഒപ്റ്റിമൈസ് ചെയ്യാമെന്ന് മനസിലാക്കുക.

Next.js എഡ്ജ് കോൺഫിഗ്: ഗ്ലോബൽ കോൺഫിഗറേഷൻ വിതരണം എളുപ്പമാക്കുന്നു

ഇന്നത്തെ അതിവേഗ വെബ് ഡെവലപ്‌മെൻ്റ് രംഗത്ത്, ലോകമെമ്പാടുമുള്ള ഉപയോക്താക്കൾക്ക് വ്യക്തിഗതവും ചലനാത്മകവുമായ അനുഭവങ്ങൾ നൽകുന്നത് നിർണായകമാണ്. ഒരു ജനപ്രിയ റിയാക്ട് ഫ്രെയിംവർക്കായ Next.js, മികച്ച പ്രകടനവും വിപുലീകരിക്കാവുന്നതുമായ വെബ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിന് ശക്തമായ ഒരു പരിഹാരം നൽകുന്നു. അതിൻ്റെ പ്രധാന സവിശേഷതകളിലൊന്നാണ് എഡ്ജ് കോൺഫിഗ്, എഡ്ജിൽ ആഗോളതലത്തിൽ കോൺഫിഗറേഷൻ നിയന്ത്രിക്കുന്നതിനും വിതരണം ചെയ്യുന്നതിനുമുള്ള ഒരു ശക്തമായ ഉപകരണം. നിങ്ങളുടെ ആപ്ലിക്കേഷൻ്റെ പ്രകടനം ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിനും ആഗോള പ്രേക്ഷകർക്ക് അനുയോജ്യമായ അനുഭവങ്ങൾ നൽകുന്നതിനും Next.js എഡ്ജ് കോൺഫിഗ് മനസ്സിലാക്കുന്നതിനും ഉപയോഗിക്കുന്നതിനുമുള്ള ഒരു സമഗ്രമായ വഴികാട്ടിയാണ് ഈ ബ്ലോഗ് പോസ്റ്റ്.

എന്താണ് Next.js എഡ്ജ് കോൺഫിഗ്?

Next.js എഡ്ജ് ഫംഗ്ഷനുകളിലേക്ക് കോൺഫിഗറേഷൻ ഡാറ്റ നൽകുന്നതിനായി പ്രത്യേകം രൂപകൽപ്പന ചെയ്ത, ആഗോളതലത്തിൽ വിതരണം ചെയ്യപ്പെട്ട, താഴ്ന്ന ലേറ്റൻസിയുള്ള (low-latency) ഒരു കീ-വാല്യൂ സ്റ്റോറാണ് Next.js എഡ്ജ് കോൺഫിഗ്. പരമ്പരാഗത ഡാറ്റാബേസുകളിൽ നിന്നും API-കളിൽ നിന്നും വ്യത്യസ്തമായി, എഡ്ജ് കോൺഫിഗ് വേഗതയ്ക്കും കാര്യക്ഷമതയ്ക്കും വേണ്ടി ഒപ്റ്റിമൈസ് ചെയ്തിരിക്കുന്നു, ഇത് ലോകത്തെവിടെ നിന്നും മില്ലിസെക്കൻഡിനുള്ളിൽ കോൺഫിഗറേഷൻ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. പ്രകടനത്തിൽ വിട്ടുവീഴ്ച ചെയ്യാതെ തന്നെ, കോൺഫിഗറേഷൻ മൂല്യങ്ങളെ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ ആപ്ലിക്കേഷൻ്റെ സ്വഭാവം ചലനാത്മകമായി ക്രമീകരിക്കാൻ ഇത് നിങ്ങളെ പ്രാപ്തരാക്കുന്നു.

എഡ്ജ് ഫംഗ്ഷനുകളിൽ നിന്ന് വളരെ വേഗത്തിൽ അന്വേഷിക്കാൻ കഴിയുന്ന, ആഗോളതലത്തിൽ പകർത്തിയ ഒരു JSON ഫയലായി ഇതിനെ കരുതുക. ഇത് താഴെ പറയുന്നവയ്ക്ക് അനുയോജ്യമാണ്:

എന്തിന് എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കണം?

Next.js എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കുന്നതിൻ്റെ പ്രധാന നേട്ടങ്ങൾ താഴെ പറയുന്നവയാണ്:

എഡ്ജ് കോൺഫിഗ് എങ്ങനെ ഉപയോഗിച്ച് തുടങ്ങാം

Next.js എഡ്ജ് കോൺഫിഗ് ഉപയോഗിച്ച് തുടങ്ങുന്നതിനുള്ള ഘട്ടം ഘട്ടമായുള്ള വഴികാട്ടി താഴെ നൽകുന്നു:

1. പ്രോജക്റ്റ് സെറ്റപ്പ്

നിങ്ങൾക്ക് ഒരു Next.js പ്രോജക്റ്റ് ഉണ്ടെന്ന് ഉറപ്പാക്കുക. ഇല്ലെങ്കിൽ, ഇത് ഉപയോഗിച്ച് ഒന്ന് സൃഷ്ടിക്കുക:

npx create-next-app@latest my-app
cd my-app

2. ഒരു എഡ്ജ് കോൺഫിഗ് സൃഷ്ടിക്കുക

എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കുന്നതിന് നിങ്ങൾക്ക് ഒരു വെർസൽ അക്കൗണ്ട് ആവശ്യമാണ്. നിങ്ങൾ ലോഗിൻ ചെയ്തുകഴിഞ്ഞാൽ, നിങ്ങളുടെ വെർസൽ പ്രോജക്റ്റിലേക്ക് പോയി ഒരു പുതിയ എഡ്ജ് കോൺഫിഗ് സൃഷ്ടിക്കുക. അതിന് വിവരണാത്മകമായ ഒരു പേര് നൽകുക.

3. എഡ്ജ് കോൺഫിഗ് SDK ഇൻസ്റ്റാൾ ചെയ്യുക

നിങ്ങളുടെ Next.js പ്രോജക്റ്റിൽ @vercel/edge-config SDK ഇൻസ്റ്റാൾ ചെയ്യുക:

npm install @vercel/edge-config
# അല്ലെങ്കിൽ
yarn add @vercel/edge-config
# അല്ലെങ്കിൽ
pnpm install @vercel/edge-config

4. എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ കോൺഫിഗർ ചെയ്യുക

നിങ്ങൾ EDGE_CONFIG എൻവയോൺമെൻ്റ് വേരിയബിൾ കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട്. നിങ്ങളുടെ എഡ്ജ് കോൺഫിഗിനായുള്ള വെർസൽ ഡാഷ്‌ബോർഡിൽ ഈ വേരിയബിളിൻ്റെ മൂല്യം നിങ്ങൾക്ക് കണ്ടെത്താനാകും. ഇത് നിങ്ങളുടെ .env.local ഫയലിലേക്ക് ചേർക്കുക (അല്ലെങ്കിൽ പ്രൊഡക്ഷനായി നിങ്ങളുടെ വെർസൽ പ്രോജക്റ്റ് ക്രമീകരണങ്ങളിൽ):

EDGE_CONFIG=your_edge_config_url

പ്രധാനപ്പെട്ടത്: നിങ്ങളുടെ .env.local ഫയൽ ഒരിക്കലും നിങ്ങളുടെ റിപ്പോസിറ്ററിയിലേക്ക് കമ്മിറ്റ് ചെയ്യരുത്. പ്രൊഡക്ഷൻ എൻവയോൺമെന്റുകൾക്കായി വെർസലിൻ്റെ എൻവയോൺമെൻ്റ് വേരിയബിൾ ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുക.

5. നിങ്ങളുടെ കോഡിൽ കോൺഫിഗറേഷൻ മൂല്യങ്ങൾ ആക്സസ് ചെയ്യുക

ഇപ്പോൾ നിങ്ങൾക്ക് നിങ്ങളുടെ Next.js കോഡിൽ എഡ്ജ് കോൺഫിഗ് മൂല്യങ്ങൾ ആക്സസ് ചെയ്യാൻ കഴിയും. ഒരു ഉദാഹരണം ഇതാ:

// pages/index.js
import { get } from '@vercel/edge-config';

export async function getServerSideProps() {
  const featureFlag = await get('featureFlag');
  const welcomeMessage = await get('welcomeMessage');

  return {
    props: {
      featureFlag,
      welcomeMessage,
    },
  };
}

export default function Home({ featureFlag, welcomeMessage }) {
  return (
    <div>
      <h1>{welcomeMessage}</h1>
      {featureFlag ? <p>ഫീച്ചർ പ്രവർത്തനക്ഷമമാണ്!</p> : <p>ഫീച്ചർ പ്രവർത്തനരഹിതമാണ്.</p>}
    </div>
  );
}

ഈ ഉദാഹരണത്തിൽ, നമ്മൾ getServerSideProps-ൽ എഡ്ജ് കോൺഫിഗിൽ നിന്ന് featureFlag, welcomeMessage എന്നിവയുടെ മൂല്യങ്ങൾ ലഭ്യമാക്കുന്നു. ഈ മൂല്യങ്ങൾ പിന്നീട് Home കമ്പോണൻ്റിലേക്ക് പ്രോപ്‌സായി നൽകുന്നു.

6. കോൺഫിഗറേഷൻ മൂല്യങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുക

നിങ്ങൾക്ക് വെർസൽ ഡാഷ്‌ബോർഡ് വഴി നിങ്ങളുടെ എഡ്ജ് കോൺഫിഗിലെ മൂല്യങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യാൻ കഴിയും. മാറ്റങ്ങൾ മില്ലിസെക്കൻഡിനുള്ളിൽ ആഗോളതലത്തിൽ പ്രചരിപ്പിക്കപ്പെടുന്നു.

വിപുലമായ ഉപയോഗങ്ങളും ഉദാഹരണങ്ങളും

എഡ്ജ് കോൺഫിഗ് ഉപയോഗിച്ചുള്ള A/B ടെസ്റ്റിംഗ്

A/B ടെസ്റ്റിംഗിന് എഡ്ജ് കോൺഫിഗ് അനുയോജ്യമാണ്. ഉപയോക്താവിന് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ്റെ ഏത് പതിപ്പാണ് നൽകേണ്ടതെന്ന് നിർണ്ണയിക്കുന്ന ഒരു കോൺഫിഗറേഷൻ മൂല്യം നിങ്ങൾക്ക് നിർവചിക്കാം. ഉദാഹരണത്തിന്:

  1. abTestGroup എന്ന കീ ഉപയോഗിച്ച് ഒരു എഡ്ജ് കോൺഫിഗ് സൃഷ്ടിക്കുക.
  2. മൂല്യം A അല്ലെങ്കിൽ B ആയി സജ്ജമാക്കുക.
  3. നിങ്ങളുടെ എഡ്ജ് ഫംഗ്ഷനിൽ, abTestGroup മൂല്യം വായിക്കുക.
  4. മൂല്യത്തെ അടിസ്ഥാനമാക്കി, നിങ്ങളുടെ ഉള്ളടക്കത്തിൻ്റെ A പതിപ്പോ B പതിപ്പോ നൽകുക.

ഒരു ഉദാഹരണം ഇതാ:

// pages/index.js
import { get } from '@vercel/edge-config';

export async function getServerSideProps() {
  const abTestGroup = await get('abTestGroup');

  let content;
  if (abTestGroup === 'A') {
    content = 'ഇത് പതിപ്പ് A ആണ്!';
  } else {
    content = 'ഇത് പതിപ്പ് B ആണ്!';
  }

  return {
    props: {
      content,
    },
  };
}

export default function Home({ content }) {
  return (
    <div>
      <h1>A/B ടെസ്റ്റ്</h1>
      <p>{content}</p>
    </div>
  );
}

ഓരോ പതിപ്പിൻ്റെയും പ്രകടനം ട്രാക്ക് ചെയ്യാനും ഏത് പതിപ്പാണ് മികച്ചതെന്ന് നിർണ്ണയിക്കാനും നിങ്ങൾക്ക് അനലിറ്റിക്സ് ടൂളുകൾ ഉപയോഗിക്കാം. സമഗ്രമായ A/B ടെസ്റ്റിംഗ് ഡാറ്റ ശേഖരണത്തിനും വിശകലനത്തിനുമായി ഗൂഗിൾ അനലിറ്റിക്സ്, ആംപ്ലിറ്റ്യൂഡ്, അല്ലെങ്കിൽ മിക്സ്പാനൽ പോലുള്ള ടൂളുകൾ പരിഗണിക്കുക.

എഡ്ജ് കോൺഫിഗ് ഉപയോഗിച്ചുള്ള ഫീച്ചർ ഫ്ലാഗുകൾ

പുതിയ കോഡ് വിന്യസിക്കാതെ തന്നെ ഫീച്ചറുകൾ പ്രവർത്തനക്ഷമമാക്കാനോ പ്രവർത്തനരഹിതമാക്കാനോ ഫീച്ചർ ഫ്ലാഗുകൾ നിങ്ങളെ അനുവദിക്കുന്നു. പ്രൊഡക്ഷനിൽ പുതിയ ഫീച്ചറുകൾ പരീക്ഷിക്കുന്നതിനോ അല്ലെങ്കിൽ ഒരു കൂട്ടം ഉപയോക്താക്കൾക്ക് ക്രമേണ ഫീച്ചറുകൾ ലഭ്യമാക്കുന്നതിനോ ഇത് ഉപയോഗപ്രദമാണ്. A/B ടെസ്റ്റിംഗിന് സമാനമായി, നിങ്ങളുടെ എഡ്ജ് കോൺഫിഗിലെ ഒരു ലളിതമായ ബൂളിയൻ ഫ്ലാഗ് ഉപയോഗിച്ച് ഫീച്ചർ ലഭ്യത നിയന്ത്രിക്കാൻ കഴിയും.

  1. newFeatureEnabled എന്ന കീ ഉപയോഗിച്ച് ഒരു എഡ്ജ് കോൺഫിഗ് സൃഷ്ടിക്കുക.
  2. മൂല്യം true അല്ലെങ്കിൽ false ആയി സജ്ജമാക്കുക.
  3. നിങ്ങളുടെ എഡ്ജ് ഫംഗ്ഷനിൽ, newFeatureEnabled മൂല്യം വായിക്കുക.
  4. മൂല്യത്തെ അടിസ്ഥാനമാക്കി, പുതിയ ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ ചെയ്യുക.
// components/MyComponent.js
import { get } from '@vercel/edge-config';

export async function MyComponent() {
  const newFeatureEnabled = await get('newFeatureEnabled');

  return (
    <div>
      {newFeatureEnabled ? <p>പുതിയ ഫീച്ചർ പ്രവർത്തനക്ഷമമാണ്!</p> : <p>പുതിയ ഫീച്ചർ പ്രവർത്തനരഹിതമാണ്.</p>}
    </div>
  );
}

export default MyComponent;

എഡ്ജ് കോൺഫിഗ് ഉപയോഗിച്ചുള്ള വ്യക്തിഗതമാക്കൽ

ഉപയോക്താവിൻ്റെ താൽപ്പര്യങ്ങളോ ലൊക്കേഷനോ അടിസ്ഥാനമാക്കി ഉള്ളടക്കവും അനുഭവങ്ങളും വ്യക്തിഗതമാക്കാൻ നിങ്ങൾക്ക് എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഉപയോക്തൃ മുൻഗണനകൾ ഒരു ഡാറ്റാബേസിൽ സംഭരിക്കാനും തുടർന്ന് ആ മുൻഗണനകളെ അടിസ്ഥാനമാക്കി വ്യത്യസ്ത ഉള്ളടക്കം നൽകാൻ എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കാനും കഴിയും.

ഉദാഹരണ സാഹചര്യം: ഒരു ആഗോള ഇ-കൊമേഴ്‌സ് സൈറ്റ് ഉപയോക്താവിൻ്റെ രാജ്യത്തെ അടിസ്ഥാനമാക്കി ഉൽപ്പന്ന ശുപാർശകൾ പ്രദർശിപ്പിക്കാൻ ആഗ്രഹിക്കുന്നു. രാജ്യങ്ങളെ ശുപാർശ വിഭാഗങ്ങളുമായി മാപ്പ് ചെയ്യാൻ അവർക്ക് ഒരു എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കാം.

  1. countryToCategoryMap എന്ന കീ ഉപയോഗിച്ച് ഒരു എഡ്ജ് കോൺഫിഗ് സൃഷ്ടിക്കുക.
  2. രാജ്യങ്ങളെ ഉൽപ്പന്ന വിഭാഗങ്ങളുമായി മാപ്പ് ചെയ്യുന്ന ഒരു JSON ഒബ്ജക്റ്റായി മൂല്യം സജ്ജമാക്കുക (ഉദാഹരണത്തിന്, {"US": "ഇലക്ട്രോണിക്സ്", "GB": "ഫാഷൻ", "JP": "ഗൃഹോപകരണങ്ങൾ"}).
  3. നിങ്ങളുടെ എഡ്ജ് ഫംഗ്ഷനിൽ, countryToCategoryMap മൂല്യം വായിക്കുക.
  4. ഉപയോക്താവിൻ്റെ രാജ്യം നിർണ്ണയിക്കുക (ഉദാഹരണത്തിന്, അവരുടെ IP വിലാസത്തിൽ നിന്നോ ഒരു കുക്കിയിൽ നിന്നോ).
  5. അനുയോജ്യമായ ഉൽപ്പന്ന വിഭാഗം നിർണ്ണയിക്കാൻ countryToCategoryMap ഉപയോഗിക്കുക.
  6. ആ വിഭാഗത്തിൽ നിന്നുള്ള ഉൽപ്പന്ന ശുപാർശകൾ പ്രദർശിപ്പിക്കുക.
// pages/products.js
import { get } from '@vercel/edge-config';

export async function getServerSideProps(context) {
  const countryToCategoryMap = await get('countryToCategoryMap');
  const country = context.req.headers['x-vercel-ip-country'] || 'US'; // ഡിഫോൾട്ടായി US
  const category = countryToCategoryMap[country] || 'General'; // ഡിഫോൾട്ടായി General

  // വിഭാഗത്തെ അടിസ്ഥാനമാക്കി ഉൽപ്പന്ന ശുപാർശകൾ നേടുക
  const products = await fetchProducts(category);

  return {
    props: {
      products,
    },
  };
}

export default function Products({ products }) {
  return (
    <div>
      <h1>ഉൽപ്പന്ന ശുപാർശകൾ</h1>
      <ul>
        {products.map((product) => (
          <li key={product.id}>{product.name}</li>
        ))}
      </ul>
    </div>
  );
}

async function fetchProducts(category) {
  // നിങ്ങളുടെ യഥാർത്ഥ ഉൽപ്പന്നം നേടുന്ന ലോജിക് ഉപയോഗിച്ച് ഇത് മാറ്റിസ്ഥാപിക്കുക
  return [
    { id: 1, name: `ഉൽപ്പന്നം 1 (${category})` },
    { id: 2, name: `ഉൽപ്പന്നം 2 (${category})` },
  ];
}

ഈ ഉദാഹരണം ഉപയോക്താവിൻ്റെ രാജ്യം നിർണ്ണയിക്കാൻ x-vercel-ip-country ഹെഡർ ഉപയോഗിക്കുന്നു. ഈ ഹെഡർ വെർസൽ സ്വയമേവ ചേർക്കുന്നു. IP അടിസ്ഥാനമാക്കിയുള്ള ജിയോലൊക്കേഷനെ മാത്രം ആശ്രയിക്കുന്നത് എല്ലായ്പ്പോഴും കൃത്യമായിരിക്കണമെന്നില്ല എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്. മെച്ചപ്പെട്ട കൃത്യതയ്ക്കായി ഉപയോക്താവ് നൽകുന്ന ലൊക്കേഷൻ അല്ലെങ്കിൽ കൂടുതൽ സങ്കീർണ്ണമായ ജിയോലൊക്കേഷൻ സേവനങ്ങൾ പോലുള്ള മറ്റ് രീതികൾ ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക.

എഡ്ജ് കോൺഫിഗ് ഉപയോഗിച്ചുള്ള ജ്യോഗ്രാഫിക് റൂട്ടിംഗ്

ഉപയോക്താക്കളുടെ ലൊക്കേഷൻ അടിസ്ഥാനമാക്കി അവരെ വ്യത്യസ്ത റിസോഴ്സുകളിലേക്ക് റൂട്ട് ചെയ്യാൻ എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കാം. പ്രാദേശികവൽക്കരിച്ച ഉള്ളടക്കം നൽകുന്നതിനോ പ്രാദേശിക നിയന്ത്രണങ്ങൾ പാലിക്കുന്നതിനോ ഇത് ഉപയോഗപ്രദമാണ്.

  1. countryToRedirectMap എന്ന കീ ഉപയോഗിച്ച് ഒരു എഡ്ജ് കോൺഫിഗ് സൃഷ്ടിക്കുക.
  2. രാജ്യങ്ങളെ URL-കളുമായി മാപ്പ് ചെയ്യുന്ന ഒരു JSON ഒബ്ജക്റ്റായി മൂല്യം സജ്ജമാക്കുക (ഉദാഹരണത്തിന്, {"CN": "/china", "DE": "/germany"}).
  3. നിങ്ങളുടെ എഡ്ജ് ഫംഗ്ഷനിൽ, countryToRedirectMap മൂല്യം വായിക്കുക.
  4. ഉപയോക്താവിൻ്റെ രാജ്യം നിർണ്ണയിക്കുക (ഉദാഹരണത്തിന്, അവരുടെ IP വിലാസത്തിൽ നിന്ന്).
  5. ഉപയോക്താവിനെ അനുയോജ്യമായ URL-ലേക്ക് റീഡയറക്ട് ചെയ്യുക.
// pages/_middleware.js
import { NextResponse } from 'next/server'
import { get } from '@vercel/edge-config';

export async function middleware(req) {
  const countryToRedirectMap = await get('countryToRedirectMap');
  const country = req.geo.country || 'US'; // ഡിഫോൾട്ടായി US
  const redirectUrl = countryToRedirectMap[country];

  if (redirectUrl) {
    return NextResponse.redirect(new URL(redirectUrl, req.url))
  }

  return NextResponse.next()
}

export const config = {
  matcher: '/',
}

ഈ ഉദാഹരണം req.geo.country പ്രോപ്പർട്ടി ഉപയോഗിക്കുന്നു, ഇത് വെർസലിൻ്റെ എഡ്ജ് നെറ്റ്‌വർക്ക് ഉപയോക്താവിൻ്റെ രാജ്യ കോഡ് ഉപയോഗിച്ച് സ്വയമേവ പോപ്പുലേറ്റ് ചെയ്യുന്നു. ഇത് x-vercel-ip-country ഹെഡർ നേരിട്ട് പാഴ്‌സ് ചെയ്യുന്നതിനേക്കാൾ വൃത്തിയുള്ളതും വിശ്വസനീയവുമായ ഒരു സമീപനമാണ്. ഉപയോക്താവിൻ്റെ രാജ്യത്തിനായി എഡ്ജ് കോൺഫിഗിൽ ഒരു റീഡയറക്ട് URL നിർവചിച്ചിട്ടുണ്ടോ എന്ന് മിഡിൽവെയർ ഫംഗ്ഷൻ പരിശോധിക്കുന്നു. ഉണ്ടെങ്കിൽ, അത് ഉപയോക്താവിനെ ആ URL-ലേക്ക് റീഡയറക്ട് ചെയ്യുന്നു. അല്ലെങ്കിൽ, അത് അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നത് തുടരുന്നു.

എഡ്ജ് കോൺഫിഗ് ഉപയോഗിച്ചുള്ള റേറ്റ് ലിമിറ്റിംഗ്

എഡ്ജ് കോൺഫിഗ് ഒരു പൂർണ്ണമായ റേറ്റ് ലിമിറ്റിംഗ് പരിഹാരമായി രൂപകൽപ്പന ചെയ്തിട്ടില്ലെങ്കിലും, അടിസ്ഥാനപരമായ റേറ്റ് ലിമിറ്റിംഗ് നടപ്പിലാക്കാൻ നിങ്ങൾക്ക് മറ്റ് സാങ്കേതിക വിദ്യകളുമായി ചേർന്ന് ഇത് ഉപയോഗിക്കാം. റേറ്റ് ലിമിറ്റിംഗ് പാരാമീറ്ററുകൾ (ഉദാ. മിനിറ്റിൽ അഭ്യർത്ഥനകൾ) എഡ്ജ് കോൺഫിഗിൽ സംഭരിക്കുകയും തുടർന്ന് ആ പാരാമീറ്ററുകൾ നിങ്ങളുടെ എഡ്ജ് ഫംഗ്ഷനുകളിൽ റേറ്റ് ലിമിറ്റുകൾ നടപ്പിലാക്കാൻ ഉപയോഗിക്കുക എന്നതാണ് ആശയം.

പ്രധാന കുറിപ്പ്: ഈ സമീപനം ലളിതമായ റേറ്റ് ലിമിറ്റിംഗ് സാഹചര്യങ്ങൾക്ക് അനുയോജ്യമാണ്. കൂടുതൽ ശക്തമായ റേറ്റ് ലിമിറ്റിംഗിനായി, സമർപ്പിത റേറ്റ് ലിമിറ്റിംഗ് സേവനങ്ങളോ മിഡിൽവെയറോ ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക.

  1. requestsPerMinute, blockedIps പോലുള്ള കീകൾ ഉപയോഗിച്ച് ഒരു എഡ്ജ് കോൺഫിഗ് സൃഷ്ടിക്കുക.
  2. requestsPerMinute മൂല്യം ആവശ്യമുള്ള റേറ്റ് ലിമിറ്റിലേക്ക് സജ്ജമാക്കുക.
  3. ബ്ലോക്ക് ചെയ്യേണ്ട IP വിലാസങ്ങളുടെ ഒരു അറേയിലേക്ക് blockedIps മൂല്യം സജ്ജമാക്കുക.
  4. നിങ്ങളുടെ എഡ്ജ് ഫംഗ്ഷനിൽ, requestsPerMinute, blockedIps മൂല്യങ്ങൾ വായിക്കുക.
  5. ഉപയോക്താവിൻ്റെ IP വിലാസം blockedIps അറേയിലാണോ എന്ന് പരിശോധിക്കുക. ആണെങ്കിൽ, അഭ്യർത്ഥന ബ്ലോക്ക് ചെയ്യുക.
  6. കഴിഞ്ഞ മിനിറ്റിനുള്ളിൽ ഓരോ IP വിലാസത്തിൽ നിന്നുമുള്ള അഭ്യർത്ഥനകളുടെ എണ്ണം ട്രാക്ക് ചെയ്യാൻ ഒരു കാഷിംഗ് മെക്കാനിസം (ഉദാ. Redis അല്ലെങ്കിൽ Vercel's Edge Cache) ഉപയോഗിക്കുക.
  7. ഉപയോക്താവിൻ്റെ IP വിലാസത്തിൽ നിന്നുള്ള അഭ്യർത്ഥനകളുടെ എണ്ണം requestsPerMinute പരിധി കവിയുന്നുവെങ്കിൽ, അഭ്യർത്ഥന ബ്ലോക്ക് ചെയ്യുക.

ഉദാഹരണം (വിവരണാത്മകം - കാഷിംഗിനായി അധിക നിർവ്വഹണം ആവശ്യമാണ്):

// pages/api/protected-route.js
import { get } from '@vercel/edge-config';

export default async function handler(req, res) {
  const requestsPerMinute = await get('requestsPerMinute');
  const blockedIps = await get('blockedIps');
  const ip = req.headers['x-real-ip'] || req.connection.remoteAddress; // ഉപയോക്താവിൻ്റെ IP നേടുക

  // IP ബ്ലോക്ക് ചെയ്തിട്ടുണ്ടോ എന്ന് പരിശോധിക്കുക
  if (blockedIps && blockedIps.includes(ip)) {
    return res.status(429).send('അമിതമായ അഭ്യർത്ഥനകൾ');
  }

  // TODO: അഭ്യർത്ഥനകളുടെ എണ്ണവും കാഷിംഗും നടപ്പിലാക്കുക (ഉദാഹരണത്തിന്, Redis അല്ലെങ്കിൽ Vercel Edge Cache ഉപയോഗിച്ച്)
  // ഉദാഹരണം (ആശയം):
  // const requestCount = await getRequestCount(ip);
  // if (requestCount > requestsPerMinute) {
  //   return res.status(429).send('അമിതമായ അഭ്യർത്ഥനകൾ');
  // }
  // await incrementRequestCount(ip);

  // നിങ്ങളുടെ സംരക്ഷിത റൂട്ട് ലോജിക് ഇവിടെ
  res.status(200).send('സംരക്ഷിത റൂട്ട് വിജയകരമായി ആക്‌സസ് ചെയ്തു!');
}

റേറ്റ് ലിമിറ്റിംഗിനുള്ള പ്രധാന പരിഗണനകൾ:

എഡ്ജ് കോൺഫിഗ് ഉപയോഗിക്കുന്നതിനുള്ള മികച്ച രീതികൾ

എഡ്ജ് കോൺഫിഗിനുള്ള ബദലുകൾ

എഡ്ജ് കോൺഫിഗ് ഒരു ശക്തമായ ഉപകരണമാണെങ്കിലും, എല്ലാ ഉപയോഗ സാഹചര്യങ്ങൾക്കും ഇത് എല്ലായ്പ്പോഴും മികച്ച പരിഹാരമല്ല. പരിഗണിക്കേണ്ട ചില ബദലുകൾ താഴെ നൽകുന്നു:

ഉപസംഹാരം

Next.js എഡ്ജ് കോൺഫിഗ് എഡ്ജിൽ ആഗോളതലത്തിൽ കോൺഫിഗറേഷൻ കൈകാര്യം ചെയ്യുന്നതിനും വിതരണം ചെയ്യുന്നതിനുമുള്ള ഒരു ശക്തമായ ഉപകരണമാണ്. എഡ്ജ് കോൺഫിഗ് പ്രയോജനപ്പെടുത്തുന്നതിലൂടെ, നിങ്ങളുടെ ആപ്ലിക്കേഷൻ്റെ പ്രകടനം ഒപ്റ്റിമൈസ് ചെയ്യാനും വ്യക്തിഗതമാക്കിയ അനുഭവങ്ങൾ നൽകാനും നിങ്ങളുടെ കോൺഫിഗറേഷൻ മാനേജ്മെൻ്റ് വർക്ക്ഫ്ലോ ലളിതമാക്കാനും കഴിയും. നിങ്ങൾ ഒരു ആഗോള ഇ-കൊമേഴ്‌സ് സൈറ്റോ, ഒരു സോഷ്യൽ മീഡിയ പ്ലാറ്റ്‌ഫോമോ, അല്ലെങ്കിൽ മറ്റേതെങ്കിലും തരത്തിലുള്ള വെബ് ആപ്ലിക്കേഷനോ നിർമ്മിക്കുകയാണെങ്കിലും, ലോകമെമ്പാടുമുള്ള നിങ്ങളുടെ ഉപയോക്താക്കൾക്ക് വേഗതയേറിയതും ആകർഷകവുമായ അനുഭവം നൽകാൻ എഡ്ജ് കോൺഫിഗിന് നിങ്ങളെ സഹായിക്കാൻ കഴിയും. സാധ്യതകൾ പര്യവേക്ഷണം ചെയ്യുകയും അതിൻ്റെ കഴിവുകൾ അൺലോക്ക് ചെയ്യുന്നതിന് ഇന്ന് തന്നെ നിങ്ങളുടെ Next.js പ്രോജക്റ്റുകളിൽ എഡ്ജ് കോൺഫിഗ് സംയോജിപ്പിക്കുകയും ചെയ്യുക!