தமிழ்

சர்வர்-சைடு ரெண்டரிங் (SSR) மற்றும் ஸ்டேடிக் சைட் ஜெனரேஷன் (SSG) ஆகியவற்றுக்கு இடையேயான முக்கிய வேறுபாடுகளைப் புரிந்துகொண்டு Next.js ஆப் ரூட்டரின் திறனைத் திறக்கவும். சிறந்த செயல்திறன் மற்றும் SEO-க்கு ஒவ்வொரு உத்தியையும் எப்போது பயன்படுத்த வேண்டும் என்பதைக் கற்றுக்கொள்ளுங்கள்.

Next.js ஆப் ரூட்டர்: SSR vs. SSG - ஒரு முழுமையான வழிகாட்டி

Next.js ஆப் ரூட்டர், ரியாக்ட் அப்ளிகேஷன்களை நாம் உருவாக்கும் முறையை புரட்சிகரமாக்கியுள்ளது, இது மேம்பட்ட செயல்திறன், நெகிழ்வுத்தன்மை மற்றும் டெவலப்பர் அனுபவத்தை வழங்குகிறது. இந்த புதிய கட்டமைப்பின் மையமாக இரண்டு சக்திவாய்ந்த ரெண்டரிங் உத்திகள் உள்ளன: சர்வர்-சைடு ரெண்டரிங் (SSR) மற்றும் ஸ்டேடிக் சைட் ஜெனரேஷன் (SSG). உங்கள் அப்ளிகேஷனின் செயல்திறன், SEO மற்றும் பயனர் அனுபவத்தை மேம்படுத்துவதற்கு சரியான அணுகுமுறையைத் தேர்ந்தெடுப்பது மிகவும் முக்கியமானது. இந்த விரிவான வழிகாட்டி Next.js ஆப் ரூட்டரின் சூழலில் SSR மற்றும் SSG-யின் நுணுக்கங்களை ஆராய்ந்து, உங்கள் திட்டங்களுக்கு தகவலறிந்த முடிவுகளை எடுக்க உதவும்.

அடிப்படைகளைப் புரிந்துகொள்ளுதல்: SSR மற்றும் SSG

Next.js ஆப் ரூட்டரின் பிரத்தியேகங்களைப் பற்றி ஆராய்வதற்கு முன், SSR மற்றும் SSG பற்றிய தெளிவான புரிதலை ஏற்படுத்துவோம்.

சர்வர்-சைடு ரெண்டரிங் (SSR)

SSR என்பது ஒவ்வொரு கோரிக்கைக்கும் சர்வரில் ரியாக்ட் காம்போனென்ட்கள் HTML ஆக ரெண்டர் செய்யப்படும் ஒரு தொழில்நுட்பமாகும். சர்வர் முழுமையாக ரெண்டர் செய்யப்பட்ட HTML-ஐ கிளைன்ட் பிரவுசருக்கு அனுப்புகிறது, அது பின்னர் பக்கத்தை ஹைட்ரேட் செய்து ஊடாடும் வகையில் மாற்றுகிறது.

SSR-இன் முக்கிய பண்புகள்:

ஸ்டேடிக் சைட் ஜெனரேஷன் (SSG)

மறுபுறம், SSG என்பது பில்ட் நேரத்தில் ரியாக்ட் காம்போனென்ட்களை HTML ஆக முன்கூட்டியே ரெண்டர் செய்வதை உள்ளடக்கியது. உருவாக்கப்பட்ட HTML கோப்புகள் பின்னர் ஒரு CDN அல்லது வலை சேவையகத்திலிருந்து நேரடியாக வழங்கப்படுகின்றன.

SSG-இன் முக்கிய பண்புகள்:

Next.js ஆப் ரூட்டரில் SSR vs. SSG: முக்கிய வேறுபாடுகள்

Next.js ஆப் ரூட்டர், ரூட்களை வரையறுப்பதற்கும் டேட்டா ஃபெட்ச்சிங்கைக் கையாள்வதற்கும் ஒரு புதிய முன்னுதாரணத்தை அறிமுகப்படுத்துகிறது. இந்த புதிய சூழலில் SSR மற்றும் SSG எவ்வாறு செயல்படுத்தப்படுகின்றன மற்றும் அவற்றுக்கிடையேயான முக்கிய வேறுபாடுகளை ஆராய்வோம்.

ஆப் ரூட்டரில் டேட்டா ஃபெட்ச்சிங்

ஆப் ரூட்டர், சர்வர் காம்போனென்ட்களுக்குள் `async/await` சிண்டாக்ஸைப் பயன்படுத்தி டேட்டா ஃபெட்ச்சிங்கிற்கு ஒரு ஒருங்கிணைந்த அணுகுமுறையை வழங்குகிறது. இது நீங்கள் SSR அல்லது SSG-ஐப் பயன்படுத்தினாலும் டேட்டாவைப் பெறும் செயல்முறையை எளிதாக்குகிறது.

சர்வர் காம்போனென்ட்கள்: சர்வர் காம்போனென்ட்கள் என்பவை சர்வரில் பிரத்தியேகமாக இயங்கும் ஒரு புதிய வகை ரியாக்ட் காம்போனென்ட் ஆகும். இது API ரூட்களை உருவாக்கத் தேவையில்லாமல் உங்கள் காம்போனென்ட்களுக்குள் நேரடியாக டேட்டாவைப் பெற உங்களை அனுமதிக்கிறது.

எடுத்துக்காட்டு (SSR):

// app/blog/[slug]/page.js
import { getBlogPost } from './data';

export default async function BlogPost({ params }) {
  const post = await getBlogPost(params.slug);

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

இந்த எடுத்துக்காட்டில், `getBlogPost` ஃபங்ஷன் ஒவ்வொரு கோரிக்கைக்கும் சர்வரில் வலைப்பதிவு டேட்டாவைப் பெறுகிறது. `export default async function BlogPost` என்பது இது ஒரு சர்வர் காம்போனென்ட் என்பதைக் குறிக்கிறது.

எடுத்துக்காட்டு (SSG):

// app/blog/[slug]/page.js
import { getBlogPost } from './data';

export async function generateStaticParams() {
  const posts = await getAllBlogPosts();
  return posts.map((post) => ({ slug: post.slug }));
}

export default async function BlogPost({ params }) {
  const post = await getBlogPost(params.slug);

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

இங்கே, `generateStaticParams` ஃபங்ஷன் பில்ட் நேரத்தில் கிடைக்கக்கூடிய அனைத்து ஸ்லக்களுக்கும் வலைப்பதிவுகளை முன்கூட்டியே ரெண்டர் செய்யப் பயன்படுகிறது. இது SSG-க்கு மிகவும் முக்கியமானது.

கேச்சிங் உத்திகள்

Next.js ஆப் ரூட்டர், SSR மற்றும் SSG இரண்டிற்கும் செயல்திறனை மேம்படுத்த உள்ளமைக்கப்பட்ட கேச்சிங் வழிமுறைகளை வழங்குகிறது. இந்த வழிமுறைகளைப் புரிந்துகொள்வது மிகவும் அவசியம்.

டேட்டா கேச்: இயல்பாக, சர்வர் காம்போனென்ட்களில் `fetch` ஐப் பயன்படுத்திப் பெறப்படும் டேட்டா தானாகவே கேச் செய்யப்படுகிறது. இதன் பொருள், அதே டேட்டாவிற்கான அடுத்தடுத்த கோரிக்கைகள் கேச்சில் இருந்து வழங்கப்படும், இது உங்கள் டேட்டா மூலத்தின் மீதான சுமையைக் குறைக்கிறது.

முழு ரூட் கேச்: ஒரு ரூட்டின் முழு ரெண்டர் செய்யப்பட்ட வெளியீட்டையும் கேச் செய்ய முடியும், இது செயல்திறனை மேலும் மேம்படுத்துகிறது. உங்கள் `route.js` அல்லது `page.js` கோப்புகளில் உள்ள `cache` விருப்பத்தைப் பயன்படுத்தி கேச் நடத்தையை நீங்கள் உள்ளமைக்கலாம்.

எடுத்துக்காட்டு (கேச் முடக்குதல்):

// app/blog/[slug]/page.js

export const fetchCache = 'force-no-store';

import { getBlogPost } from './data';

export default async function BlogPost({ params }) {
  const post = await getBlogPost(params.slug);

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

இந்த நிலையில், `fetchCache = 'force-no-store'` இந்த குறிப்பிட்ட ரூட்டிற்கான கேச்சிங்கை முடக்கும், இது டேட்டா எப்போதும் சர்வரில் இருந்து புதிதாகப் பெறப்படுவதை உறுதி செய்கிறது.

டைனமிக் ஃபங்ஷன்கள்

`dynamic` ரூட் செக்மென்ட் கான்ஃபிக் விருப்பத்தை அமைப்பதன் மூலம் நீங்கள் ஒரு ரூட்டை ரன்டைமில் டைனமிக் ஆக அறிவிக்கலாம். ஒரு ரூட் டைனமிக் ஃபங்ஷன்களைப் பயன்படுத்துகிறதா என்பதை Next.js-க்குத் தெரிவிக்கவும், பில்ட் நேரத்தில் அது வித்தியாசமாக நடத்தப்பட வேண்டுமா என்பதைத் தெரிவிக்கவும் இது உதவியாக இருக்கும்.

எடுத்துக்காட்டு (டைனமிக் ரூட் செக்மென்ட்):

// app/blog/[slug]/page.js
export const dynamic = 'force-dynamic'; // static by default, unless reading the request

import { getBlogPost } from './data';

export default async function BlogPost({ params }) {
  const post = await getBlogPost(params.slug);

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

இன்க்ரிமெண்டல் ஸ்டேடிக் ரீஜெனரேஷன் (ISR)

ஆப் ரூட்டர், SSR மற்றும் SSG இரண்டின் நன்மைகளையும் இணைக்கும் ஒரு கலப்பின அணுகுமுறையாக இன்க்ரிமெண்டல் ஸ்டேடிக் ரீஜெனரேஷனை (ISR) வழங்குகிறது. ISR பக்கங்களை ஸ்டேட்டிக்காக உருவாக்க உங்களை அனுமதிக்கிறது, அதே நேரத்தில் குறிப்பிட்ட இடைவெளியில் பின்னணியில் அவற்றைப் புதுப்பிக்கவும் முடியும்.

ISR எவ்வாறு செயல்படுகிறது:

  1. ஒரு பக்கத்திற்கான முதல் கோரிக்கை ஸ்டேடிக் ஜெனரேஷனைத் தூண்டுகிறது.
  2. அடுத்தடுத்த கோரிக்கைகள் ஸ்டேட்டிக்காக உருவாக்கப்பட்ட கேச்சில் இருந்து வழங்கப்படுகின்றன.
  3. பின்னணியில், Next.js ஒரு குறிப்பிட்ட நேர இடைவெளிக்குப் பிறகு (revalidate time) பக்கத்தை மீண்டும் உருவாக்குகிறது.
  4. மீண்டும் உருவாக்கம் முடிந்ததும், கேச் பக்கத்தின் புதிய பதிப்புடன் புதுப்பிக்கப்படுகிறது.

ISR-ஐ செயல்படுத்துதல்:

ISR-ஐ இயக்க, உங்கள் `getStaticProps` ஃபங்ஷனில் (`pages` டைரக்டரியில்) அல்லது `fetch` விருப்பங்களில் (`app` டைரக்டரியில்) `revalidate` விருப்பத்தை உள்ளமைக்க வேண்டும்.

எடுத்துக்காட்டு (ஆப் ரூட்டரில் ISR):

// app/blog/[slug]/page.js
import { getBlogPost } from './data';

export default async function BlogPost({ params }) {
  const post = await getBlogPost(params.slug);

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

export const revalidate = 60; // Revalidate every 60 seconds

இந்த எடுத்துக்காட்டு, ஒவ்வொரு 60 வினாடிக்கும் வலைப்பதிவை மீண்டும் சரிபார்க்க ISR-ஐ உள்ளமைக்கிறது. இது முழு தளத்தையும் மீண்டும் உருவாக்காமல் உங்கள் ஸ்டேடிக் உள்ளடக்கத்தை తాజాగా வைத்திருக்கிறது.

சரியான உத்தியைத் தேர்ந்தெடுப்பது: ஒரு நடைமுறை வழிகாட்டி

SSR, SSG, மற்றும் ISR ஆகியவற்றுக்கு இடையே தேர்ந்தெடுப்பது உங்கள் அப்ளிகேஷனின் குறிப்பிட்ட தேவைகளைப் பொறுத்தது. இதோ ஒரு முடிவெடுக்கும் கட்டமைப்பு:

SSR-ஐ எப்போது பயன்படுத்துவது:

எடுத்துக்காட்டு: தொடர்ந்து புதுப்பிக்கப்படும் கட்டுரைகள் மற்றும் பிரேக்கிங் நியூஸ் விழிப்பூட்டல்களுடன் கூடிய ஒரு செய்தி இணையதளம். நிகழ்நேரத்தில் புதுப்பிக்கப்படும் சமூக ஊடக ஊட்டங்களுக்கும் இது பொருத்தமானது.

SSG-ஐ எப்போது பயன்படுத்துவது:

எடுத்துக்காட்டு: உங்கள் திறமைகள் மற்றும் திட்டங்களைக் காட்டும் ஒரு தனிப்பட்ட போர்ட்ஃபோலியோ வலைத்தளம். ஒரு நிறுவனத்தின் "எங்களைப் பற்றி" பக்கம், இது அரிதாகவே மாறுகிறது.

ISR-ஐ எப்போது பயன்படுத்துவது:

எடுத்துக்காட்டு: தினசரி புதுப்பிக்கப்படும் தயாரிப்பு விலைகளைக் கொண்ட ஒரு இ-காமர்ஸ் வலைத்தளம். வாரத்திற்கு சில முறை புதிய கட்டுரைகள் வெளியிடப்படும் ஒரு வலைப்பதிவு.

Next.js ஆப் ரூட்டரில் SSR மற்றும் SSG-ஐ செயல்படுத்துவதற்கான சிறந்த நடைமுறைகள்

சிறந்த செயல்திறன் மற்றும் பராமரிப்பை உறுதிசெய்ய, Next.js ஆப் ரூட்டரில் SSR மற்றும் SSG-ஐ செயல்படுத்தும்போது இந்த சிறந்த நடைமுறைகளைப் பின்பற்றவும்:

மேம்பட்ட பரிசீலனைகள்

எட்ஜ் ஃபங்ஷன்கள்

Next.js எட்ஜ் ஃபங்ஷன்களையும் ஆதரிக்கிறது, இது எட்ஜ் நெட்வொர்க்கில் சர்வர்லெஸ் ஃபங்ஷன்களை இயக்க உங்களை அனுமதிக்கிறது. A/B சோதனை, அங்கீகாரம் மற்றும் தனிப்பயனாக்கம் போன்ற பணிகளுக்கு இது பயனுள்ளதாக இருக்கும்.

மிடில்வேர்

ஒரு கோரிக்கை நிறைவடைவதற்கு முன்பு குறியீட்டை இயக்க மிடில்வேர் உங்களை அனுமதிக்கிறது. அங்கீகாரம், திசைதிருப்பல் மற்றும் ஃபீச்சர் ஃபிளாக்ஸ் போன்ற பணிகளுக்கு நீங்கள் மிடில்வேரைப் பயன்படுத்தலாம்.

சர்வதேசமயமாக்கல் (i18n)

உலகளாவிய அப்ளிகேஷன்களை உருவாக்கும்போது, சர்வதேசமயமாக்கல் மிகவும் முக்கியமானது. Next.js i18n-க்கு உள்ளமைக்கப்பட்ட ஆதரவை வழங்குகிறது, இது உங்கள் வலைத்தளத்தின் உள்ளூர்மயமாக்கப்பட்ட பதிப்புகளை எளிதாக உருவாக்க உங்களை அனுமதிக்கிறது.

எடுத்துக்காட்டு (i18n அமைப்பு):

// next.config.js
module.exports = {
  i18n: {
    locales: ['en', 'fr', 'es', 'de'],
    defaultLocale: 'en',
  },
}

நிஜ உலக எடுத்துக்காட்டுகள்

பல்வேறு நிறுவனங்கள் SSR, SSG மற்றும் ISR-ஐ Next.js உடன் எவ்வாறு பயன்படுத்துகின்றன என்பதற்கான சில நிஜ உலக எடுத்துக்காட்டுகளைக் கருத்தில் கொள்வோம்:

முடிவுரை

Next.js ஆப் ரூட்டர் நவீன வலை அப்ளிகேஷன்களை உருவாக்குவதற்கான ஒரு சக்திவாய்ந்த மற்றும் நெகிழ்வான தளத்தை வழங்குகிறது. SSR மற்றும் SSG-க்கு இடையேயான வேறுபாடுகளைப் புரிந்துகொள்வது, ISR-இன் நன்மைகளுடன், உங்கள் ரெண்டரிங் உத்தி பற்றிய தகவலறிந்த முடிவுகளை எடுப்பதற்கு மிகவும் முக்கியமானது. உங்கள் அப்ளிகேஷனின் குறிப்பிட்ட தேவைகளை கவனமாகக் கருத்தில் கொண்டு சிறந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலம், நீங்கள் செயல்திறன், SEO மற்றும் பயனர் அனுபவத்தை மேம்படுத்தலாம், இறுதியில் உலகளாவிய பார்வையாளர்களை ஈர்க்கும் ஒரு வெற்றிகரமான வலை அப்ளிகேஷனை உருவாக்கலாம்.

உங்கள் அப்ளிகேஷனின் செயல்திறனைத் தொடர்ந்து கண்காணித்து, தேவைக்கேற்ப உங்கள் ரெண்டரிங் உத்தியை மாற்றியமைக்க நினைவில் கொள்ளுங்கள். வலை மேம்பாட்டு நிலப்பரப்பு தொடர்ந்து உருவாகி வருகிறது, எனவே சமீபத்திய போக்குகள் மற்றும் தொழில்நுட்பங்களுடன் புதுப்பித்த நிலையில் இருப்பது வெற்றிக்கு அவசியம்.