தமிழ்

திறமையான மல்டி-ரூட் பில்டிங் மூலம் உயர் செயல்திறன் மற்றும் அளவிடக்கூடிய வலைத்தளங்களை உருவாக்க Next.js பேரலல் ஸ்டேடிக் ஜெனரேஷன் (PSG) பற்றி ஆராயுங்கள். சிறந்த நடைமுறைகள், மேம்படுத்தல் நுட்பங்கள் மற்றும் மேம்பட்ட உத்திகளைக் கற்றுக்கொள்ளுங்கள்.

Next.js பேரலல் ஸ்டேடிக் ஜெனரேஷன்: அளவிடக்கூடிய வலைத்தளங்களுக்கான மல்டி-ரூட் பில்டிங்கில் தேர்ச்சி பெறுதல்

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

Next.js-ல் ஸ்டேடிக் ஜெனரேஷன் (SSG) என்றால் என்ன?

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

Next.js ஸ்டேடிக் ஜெனரேஷனுக்காக இரண்டு முதன்மை செயல்பாடுகளை வழங்குகிறது: getStaticProps மற்றும் getStaticPaths. getStaticProps தரவைப் பெற்று, பில்ட் செயல்பாட்டின் போது அதை உங்கள் பக்க கூறுகளுக்கு ப்ராப்ஸாக அனுப்புகிறது. getStaticPaths எந்த ரூட்கள் ஸ்டேடிக்காக உருவாக்கப்பட வேண்டும் என்பதை வரையறுக்கிறது. உதாரணமாக:

// பக்கங்கள்/பதிவுகள்/[id].js

export async function getStaticPaths() {
  const res = await fetch('https://api.example.com/posts');
  const posts = await res.json();

  const paths = posts.map((post) => ({
    params: { id: post.id.toString() },
  }));

  return {
    paths,
    fallback: false,
  };
}

export async function getStaticProps({ params }) {
  const res = await fetch(`https://api.example.com/posts/${params.id}`);
  const post = await res.json();

  return {
    props: {
      post,
    },
  };
}

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

export default Post;

இந்த எடுத்துக்காட்டில், getStaticPaths ஒரு API-இலிருந்து பதிவுகளின் பட்டியலைப் பெற்று, ஒவ்வொரு பதிவின் ID-ஐப் அடிப்படையாகக் கொண்டு அதற்கான ரூட்களை உருவாக்குகிறது. பின்னர் getStaticProps ஒவ்வொரு ரூட்டிற்கும் தனிப்பட்ட பதிவுத் தரவைப் பெறுகிறது.

பாரம்பரிய ஸ்டேடிக் ஜெனரேஷனில் உள்ள சவால்

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

பாரம்பரிய ஸ்டேடிக் ஜெனரேஷனின் தொடர்ச்சியான தன்மை, இதில் ரூட்கள் ஒன்றன்பின் ஒன்றாக உருவாக்கப்படுகின்றன, இந்த மந்தநிலைக்கு முதன்மைக் காரணமாகும்.

பேரலல் ஸ்டேடிக் ஜெனரேஷன் (PSG) அறிமுகம்

பேரலல் ஸ்டேடிக் ஜெனரேஷன் (PSG) பாரம்பரிய SSG-யின் வரம்புகளை ஒரே நேரத்தில் பல பணிகளைச் செய்யும் சக்தியைப் பயன்படுத்தி தீர்க்கிறது. ரூட்களை தொடர்ச்சியாக உருவாக்குவதற்குப் பதிலாக, PSG ஆனது Next.js-ஐ ஒரே நேரத்தில் பல ரூட்களை உருவாக்க அனுமதிக்கிறது, இது ஒட்டுமொத்த பில்ட் நேரத்தை வியத்தகு முறையில் குறைக்கிறது.

PSG-யின் பின்னணியில் உள்ள முக்கிய யோசனை, பில்ட் பணிச்சுமையை பல செயல்முறைகள் அல்லது த்ரெட்களில் விநியோகிப்பதாகும். இதை பல்வேறு நுட்பங்கள் மூலம் அடையலாம், அவை:

பில்ட் செயல்முறையை இணை செய்வதன் மூலம், PSG ஆனது பில்ட் நேரங்களை கணிசமாக மேம்படுத்த முடியும், குறிப்பாக அதிக எண்ணிக்கையிலான ரூட்களைக் கொண்ட வலைத்தளங்களுக்கு. 1000 ரூட்களைக் கொண்ட ஒரு வலைத்தளத்தை உருவாக்க பாரம்பரிய SSG-ஐப் பயன்படுத்தி 1 மணிநேரம் ஆகும் என்று கற்பனை செய்து பாருங்கள். PSG உடன், நீங்கள் 10 ஒரே நேர செயல்முறைகளைப் பயன்படுத்த முடிந்தால், பில்ட் நேரம் சுமார் 6 நிமிடங்களாகக் குறைக்கப்படலாம் (நேரியல் அளவிடுதலைக் கருதி).

Next.js-ல் பேரலல் ஸ்டேடிக் ஜெனரேஷனை எவ்வாறு செயல்படுத்துவது

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

1. ஒரே நேர தரவுப் பெறுதலுக்கு `p-map` பயன்படுத்துதல்

ஸ்டேடிக் ஜெனரேஷனில் ஒரு பொதுவான தடை தரவுப் பெறுதல் ஆகும். `p-map` போன்ற ஒரு லைப்ரரியைப் பயன்படுத்துவது ஒரே நேரத்தில் தரவைப் பெற உங்களை அனுமதிக்கிறது, இது getStaticProps செயல்முறையை வேகப்படுத்துகிறது.

// பக்கங்கள்/தயாரிப்புகள்/[id].js
import pMap from 'p-map';

export async function getStaticPaths() {
  const res = await fetch('https://api.example.com/products');
  const products = await res.json();

  const paths = products.map((product) => ({
    params: { id: product.id.toString() },
  }));

  return {
    paths,
    fallback: false,
  };
}

export async function getStaticProps({ params }) {
  // தயாரிப்புத் தரவைப் பெறுவதை உருவகப்படுத்துதல்
  const fetchProduct = async (id) => {
    const res = await fetch(`https://api.example.com/products/${id}`);
    return res.json();
  };

  const product = await fetchProduct(params.id);

  return {
    props: {
      product,
    },
  };
}

function Product({ product }) {
  return (
    <div>
      <h1>{product.name}</h1>
      <p>{product.description}</p>
    </div>
  );
}

export default Product;

இந்த எடுத்துக்காட்டு ரூட் ஜெனரேஷனையே வெளிப்படையாக இணை செய்யவில்லை என்றாலும், இது getStaticProps-க்குள் தரவுப் பெறுதலை இணை செய்கிறது, இது தரவுப் பெறுதல் முதன்மைத் தடையாக இருக்கும்போது பில்ட் நேரங்களை கணிசமாக மேம்படுத்தும்.

2. Node.js மற்றும் சைல்ட் ப்ராசஸ்களுடன் கூடிய தனிப்பயன் ஸ்கிரிப்டிங்

மேலும் நுணுக்கமான கட்டுப்பாட்டிற்கு, நீங்கள் ஒரு தனிப்பயன் Node.js ஸ்கிரிப்டை உருவாக்கலாம், இது முழு பில்ட் செயல்முறையையும் இணை செய்ய சைல்ட் ப்ராசஸ்களைப் பயன்படுத்துகிறது. இந்த அணுகுமுறையில் ரூட்களின் பட்டியலை துண்டுகளாகப் பிரித்து ஒவ்வொரு துண்டையும் ஒரு தனி சைல்ட் ப்ராசஸிற்கு ஒதுக்குவது அடங்கும்.

இதில் உள்ள படிகளின் ஒரு கருத்தியல் சுருக்கம் இங்கே:

  1. ரூட்களின் பட்டியலை உருவாக்குதல்: ஸ்டேடிக்காக உருவாக்கப்பட வேண்டிய ரூட்களின் முழுமையான பட்டியலை உருவாக்க getStaticPaths அல்லது அது போன்ற ஒரு பொறிமுறையைப் பயன்படுத்தவும்.
  2. ரூட்களை துண்டுகளாகப் பிரித்தல்: ரூட்களின் பட்டியலை சிறிய துண்டுகளாகப் பிரிக்கவும், ஒவ்வொன்றும் நிர்வகிக்கக்கூடிய எண்ணிக்கையிலான ரூட்களைக் கொண்டிருக்கும். உகந்த துண்டு அளவு உங்கள் வன்பொருள் மற்றும் உங்கள் பக்கங்களின் சிக்கலைப் பொறுத்தது.
  3. சைல்ட் ப்ராசஸ்களை உருவாக்குதல்: பல சைல்ட் ப்ராசஸ்களை உருவாக்க Node.js child_process தொகுதியைப் பயன்படுத்தவும்.
  4. சைல்ட் ப்ராசஸ்களுக்கு துண்டுகளை ஒதுக்குதல்: ஒவ்வொரு ரூட் துண்டையும் ஒரு சைல்ட் ப்ராசஸிற்கு ஒதுக்கவும்.
  5. சைல்ட் ப்ராசஸ்களில் Next.js பில்ட் கட்டளையை இயக்குதல்: ஒவ்வொரு சைல்ட் ப்ராசஸிற்குள்ளும், ஒதுக்கப்பட்ட ரூட் துண்டுகளுக்கு பில்டை வரம்பிடும் ஒரு குறிப்பிட்ட உள்ளமைவுடன் Next.js பில்ட் கட்டளையை (எ.கா., next build) இயக்கவும். இதில் சூழல் மாறிகளை அமைப்பது அல்லது தனிப்பயன் Next.js உள்ளமைவைப் பயன்படுத்துவது அடங்கும்.
  6. சைல்ட் ப்ராசஸ்களைக் கண்காணித்தல்: பிழைகள் மற்றும் நிறைவுக்காக சைல்ட் ப்ராசஸ்களைக் கண்காணிக்கவும்.
  7. முடிவுகளைத் திரட்டுதல்: அனைத்து சைல்ட் ப்ராசஸ்களும் வெற்றிகரமாக முடிந்ததும், முடிவுகளை (எ.கா., உருவாக்கப்பட்ட HTML கோப்புகள்) திரட்டி, தேவையான பிந்தைய செயலாக்கத்தை செய்யவும்.

இந்த அணுகுமுறைக்கு மிகவும் சிக்கலான ஸ்கிரிப்டிங் தேவைப்படுகிறது, ஆனால் இணை செயல்முறை மீது அதிக கட்டுப்பாட்டை வழங்குகிறது.

3. பில்ட் கருவிகள் மற்றும் டாஸ்க் ரன்னர்களைப் பயன்படுத்துதல்

npm-run-all அல்லது concurrently போன்ற கருவிகளும் ஒரே நேரத்தில் பல Next.js பில்ட் கட்டளைகளை இயக்கப் பயன்படுத்தப்படலாம், இருப்பினும் இந்த அணுகுமுறை ரூட் துண்டுகளை பிரத்யேகமாக நிர்வகிக்கும் ஒரு தனிப்பயன் ஸ்கிரிப்ட் போல திறமையானதாக இருக்காது.

// package.json
{
  "scripts": {
    "build:part1": "next build",
    "build:part2": "next build",
    "build:parallel": "concurrently \"npm run build:part1\" \"npm run build:part2\""
  }
}

இது ஒரு எளிமையான அணுகுமுறை, ஆனால் பில்டின் ஒவ்வொரு "பகுதியும்" பக்கங்களின் சரியான துணைக்குழுவை உருவாக்குவதை உறுதிசெய்ய சூழல் மாறிகள் அல்லது பிற பொறிமுறைகளின் கவனமான மேலாண்மை தேவைப்படுகிறது.

பேரலல் ஸ்டேடிக் ஜெனரேஷனை மேம்படுத்துதல்

PSG-ஐ செயல்படுத்துவது முதல் படி மட்டுமே. அதன் பலன்களை அதிகரிக்க, பின்வரும் மேம்படுத்தல் நுட்பங்களைக் கவனியுங்கள்:

பேரலல் ஸ்டேடிக் ஜெனரேஷனுக்கான சிறந்த நடைமுறைகள்

PSG-யின் வெற்றிகரமான செயலாக்கத்தை உறுதிப்படுத்த, இந்த சிறந்த நடைமுறைகளைப் பின்பற்றவும்:

பேரலல் ஸ்டேடிக் ஜெனரேஷனின் நிஜ உலக எடுத்துக்காட்டுகள்

குறிப்பிட்ட செயலாக்கங்கள் மாறுபடலாம் என்றாலும், வெவ்வேறு சூழ்நிலைகளில் PSG-யின் நன்மைகளை விளக்கும் சில கற்பனையான எடுத்துக்காட்டுகள் இங்கே:

மாற்று அணுகுமுறைகள்: இன்க்ரிமென்டல் ஸ்டேடிக் ரீஜெனரேஷன் (ISR)

PSG ஆரம்ப பில்டை வேகப்படுத்துவதில் கவனம் செலுத்தும் அதே வேளையில், இன்க்ரிமென்டல் ஸ்டேடிக் ரீஜெனரேஷன் (ISR) என்பது கருத்தில் கொள்ள வேண்டிய ஒரு தொடர்புடைய நுட்பமாகும். ISR உங்கள் ஆரம்ப பில்டிற்கு பிறகு ஸ்டேடிக்காக பக்கங்களை உருவாக்க உங்களை அனுமதிக்கிறது. இது அடிக்கடி மாறும் உள்ளடக்கத்திற்கு குறிப்பாக பயனுள்ளதாக இருக்கும், ஏனெனில் இது முழுமையான மறுನಿರ್மாணம் தேவைப்படாமல் உங்கள் தளத்தைப் புதுப்பிக்க உங்களை அனுமதிக்கிறது.

ISR உடன், உங்கள் getStaticProps செயல்பாட்டில் ஒரு மறுமதிப்பீட்டு நேரத்தை (வினாடிகளில்) குறிப்பிடுகிறீர்கள். இந்த நேரம் கடந்த பிறகு, Next.js அடுத்த கோரிக்கையில் பின்னணியில் பக்கத்தை மீண்டும் உருவாக்கும். இது உங்கள் பயனர்கள் எப்போதும் உள்ளடக்கத்தின் சமீபத்திய பதிப்பைப் பார்ப்பதை உறுதி செய்கிறது, அதே நேரத்தில் ஸ்டேடிக் ஜெனரேஷனின் செயல்திறன் நன்மைகளிலிருந்து பயனடைகிறது.

export async function getStaticProps() {
  // ... தரவைப் பெறுதல்

  return {
    props: {
      data,
    },
    revalidate: 60, // இந்தப் பக்கத்தை ஒவ்வொரு 60 வினாடிகளுக்கும் மீண்டும் உருவாக்கவும்
  };
}

ISR மற்றும் PSG ஆகியவற்றை ஒரு உயர் மேம்படுத்தப்பட்ட வலைத்தளத்தை உருவாக்க ஒன்றாகப் பயன்படுத்தலாம். PSG ஆரம்ப பில்டிற்குப் பயன்படுத்தப்படலாம், அதே நேரத்தில் ISR உள்ளடக்கத்தைப் புதுப்பித்த நிலையில் வைத்திருக்கப் பயன்படுத்தப்படலாம்.

தவிர்க்க வேண்டிய பொதுவான இடர்பாடுகள்

PSG-ஐ செயல்படுத்துவது சவாலானதாக இருக்கலாம், மேலும் சாத்தியமான இடர்பாடுகளைப் பற்றி அறிந்திருப்பது முக்கியம்:

பேரலல் ஸ்டேடிக் ஜெனரேஷனுக்கான கருவிகள் மற்றும் தொழில்நுட்பங்கள்

பல கருவிகள் மற்றும் தொழில்நுட்பங்கள் PSG-ஐ செயல்படுத்துவதில் உதவலாம்:

ஸ்டேடிக் ஜெனரேஷனின் எதிர்காலம்

ஸ்டேடிக் ஜெனரேஷன் என்பது வேகமாக வளர்ந்து வரும் ஒரு துறையாகும், மேலும் வரும் ஆண்டுகளில் மேலும் முன்னேற்றங்களைக் காண நாம் எதிர்பார்க்கலாம். சில சாத்தியமான எதிர்காலப் போக்குகள் பின்வருமாறு:

முடிவுரை

பேரலல் ஸ்டேடிக் ஜெனரேஷன் என்பது Next.js உடன் உயர் செயல்திறன், அளவிடக்கூடிய வலைத்தளங்களை உருவாக்குவதற்கான ஒரு சக்திவாய்ந்த நுட்பமாகும். ஒரே நேரத்தில் பல ரூட்களை உருவாக்குவதன் மூலம், PSG பில்ட் நேரங்களை கணிசமாகக் குறைத்து வலைத்தள செயல்திறனை மேம்படுத்த முடியும், குறிப்பாக அதிக எண்ணிக்கையிலான ரூட்களைக் கொண்ட பெரிய வலைத்தளங்களுக்கு. PSG-ஐ செயல்படுத்துவதற்கு கவனமான திட்டமிடல் மற்றும் செயல்படுத்தல் தேவைப்பட்டாலும், நன்மைகள் கணிசமானதாக இருக்கலாம்.

இந்த வலைப்பதிவில் கோடிட்டுக் காட்டப்பட்டுள்ள கருத்துக்கள், நுட்பங்கள் மற்றும் சிறந்த நடைமுறைகளைப் புரிந்துகொள்வதன் மூலம், உலகளாவிய அளவிடுதலுக்காக உங்கள் Next.js பயன்பாட்டை மேம்படுத்தவும் மற்றும் ஒரு சிறந்த பயனர் அனுபவத்தை வழங்கவும் நீங்கள் PSG-ஐ திறம்படப் பயன்படுத்தலாம். வலை தொடர்ந்து বিকસிக்கும்போது, PSG போன்ற நுட்பங்களில் தேர்ச்சி பெறுவது வளைவுக்கு முன்னால் தங்குவதற்கும் மற்றும் உலகளாவிய பார்வையாளர்களின் கோரிக்கைகளை பூர்த்தி செய்யக்கூடிய வலைத்தளங்களை உருவாக்குவதற்கும் முக்கியமானதாக இருக்கும். உங்கள் பில்ட் செயல்திறனைத் தொடர்ந்து கண்காணிக்கவும், தேவைக்கேற்ப உங்கள் உத்திகளை மாற்றியமைக்கவும், மற்றும் உங்கள் ஸ்டேடிக் ஜெனரேஷன் செயல்முறையை மேலும் மேம்படுத்த புதிய கருவிகள் மற்றும் தொழில்நுட்பங்களை ஆராயவும் நினைவில் கொள்ளுங்கள்.