Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Next.js Documentation27টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • কেন Next.js?
  • Installation
  • Project Structure
  • Routing ও Pages
  • Layouts
  • Linking ও Navigation
  • Server & Client Components
  • Dynamic Routes
  • Data Fetching
  • Loading ও Streaming
  • Error Handling
  • Route Handlers
  • Server Actions
  • Caching ও Revalidation
  • Metadata ও SEO
  • Images ও Fonts
  • Styling
  • Environment Variables
  • Development ও Production
  • Deployment
  • Configuration
  • Static ও Dynamic Rendering
  • Proxy
  • Performance
  • Project: Blog
  • Project: Dashboard
  1. Docs
  2. Next.js
  3. Caching ও Revalidation
Next.jsAdvanced

Caching ও Revalidation

use cache directive, cacheLife, cacheTag, revalidateTag/updateTag — আধুনিক caching বাংলায়।

14টি অংশবাংলা ভাষায়

Caching হলো data fetch-এর ফলাফল সংরক্ষণ করা যাতে বারবার একই কাজ না করতে হয়। Next.js-এ Cache Components (Next 15.3+/16) দিয়ে সহজ caching হয়।

Cache Components চালু করা

next.config.tsts
ts
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  cacheComponents: true,
};

export default nextConfig;

use cache হুড

"use cache" directive দিয়ে একটি async function বা component-এর ফলাফল cache করা যায়, cacheLife() দিয়ে lifetime ঠিক করা যায়।

app/lib/data.tsts
ts
import { cacheLife } from "next/cache";

export async function getUsers() {
  "use cache";
  cacheLife("hours");

  return db.query("SELECT * FROM users");
}
app/page.tsx (UI-level)tsx
tsx
import { cacheLife } from "next/cache";

export default async function Page() {
  "use cache";
  cacheLife("hours");

  const users = await db.query("SELECT * FROM users");

  return (
    <ul>
      {users.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

cacheLife Profiles

ProfileStaleRevalidateExpire
seconds01s60s
minutes5m1m1h
hours5m1h1d
days5m1d1w
weeks5m1w30d
max5m30d~indefinite

Revalidation (cache হারিয়ে গেলে)

  • cacheTag('posts') — cached data-তে tag দিন
  • revalidateTag('posts') — on-demand invalidate (Route Handler/Server Action)
  • updateTag('posts') — এখনই expire (read-your-own-writes)
  • revalidatePath('/posts') — path-based invalidate
app/actions.tsts
ts
"use server";

import { updateTag } from "next/cache";
import { redirect } from "next/navigation";

export async function createPost(formData: FormData) {
  const post = await db.post.create({
    data: { title: formData.get("title") },
  });

  updateTag("posts");
  redirect(`/posts/${post.id}`);
}
updateTag বনাম revalidateTag

updateTag Server Actions-এ — user-এর নিজের লেখা এখনই দেখায়। revalidateTag Server Action ও Route Handler উভয়ে — stale-while-revalidate (background refresh)। Tag-based revalidation path-based-এর চেয়ে বেশি precise, সুতরাং পছন্দ করুন।

কখন cache করবেন?

যে data runtime-data-এর উপর নির্ভর করে না ও কিছু সময় পুরোনো রাখা চলবে, তাই use cache + cacheLife দিন। Content-শোর জন্য tag + длинный cache ব্যবহার করে mutation-এ revalidate করুন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরServer Actions ও MutationsপরেরMetadata ও SEO
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com