feat(ssg): add ISR (revalidate=60) for dynamic database pages to keep data fresh
This commit is contained in:
@@ -4,6 +4,8 @@ import { getBlogPosts } from "@/app/actions";
|
||||
import BlogDetailClient from "@/components/BlogDetailClient";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
export const revalidate = 60;
|
||||
|
||||
// Convert DB format to expected BlogPost format
|
||||
function mapBlogPost(dbPost: any) {
|
||||
return {
|
||||
|
||||
@@ -3,6 +3,8 @@ import type { Locale } from "@/i18n-config";
|
||||
import BlogClient from "@/components/BlogClient";
|
||||
import { getBlogPosts } from "@/app/actions";
|
||||
|
||||
export const revalidate = 60;
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: Locale }> }) {
|
||||
const { lang } = await params;
|
||||
const dict = await getDictionary(lang);
|
||||
|
||||
@@ -5,6 +5,8 @@ import { getProjects } from "@/app/actions";
|
||||
import { slugify } from "@/lib/utils";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
export const revalidate = 60;
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: Locale, slug: string }> }) {
|
||||
const { lang, slug } = await params;
|
||||
const dict = await getDictionary(lang);
|
||||
|
||||
@@ -4,6 +4,8 @@ import WorkDetailClient from "@/components/WorkDetailClient";
|
||||
import { notFound } from "next/navigation";
|
||||
import { getProjects } from "@/app/actions";
|
||||
|
||||
export const revalidate = 60;
|
||||
|
||||
// ── Static params for all slug × lang combinations ──
|
||||
export async function generateStaticParams() {
|
||||
const langs: Locale[] = ["en", "tr"];
|
||||
|
||||
@@ -3,6 +3,8 @@ import type { Locale } from "@/i18n-config";
|
||||
import WorkClient from "@/components/WorkClient";
|
||||
import { getProjects } from "@/app/actions";
|
||||
|
||||
export const revalidate = 60;
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: Locale }> }) {
|
||||
const { lang } = await params;
|
||||
const dict = await getDictionary(lang);
|
||||
|
||||
@@ -13,11 +13,11 @@ export default function Footer({ lang, dict }: { lang: Locale; dict: any }) {
|
||||
|
||||
const registry = [
|
||||
{ name: dict.nav.services, href: `/${lang}/services` },
|
||||
{ name: dict.nav.work, href: `/${lang}/work` },
|
||||
{ name: dict.nav.process, href: `/${lang}/process` },
|
||||
{ name: dict.nav.blog, href: `/${lang}/blog` },
|
||||
{ name: dict.nav.work, href: `/${lang}/work` },
|
||||
{ name: dict.nav.process, href: `/${lang}/process` },
|
||||
{ name: dict.nav.blog, href: `/${lang}/blog` },
|
||||
{ name: dict.nav.partners, href: `/${lang}/partners` },
|
||||
{ name: dict.nav.faq, href: `/${lang}/faq` },
|
||||
{ name: dict.nav.faq, href: `/${lang}/faq` },
|
||||
];
|
||||
|
||||
return (
|
||||
@@ -26,8 +26,8 @@ export default function Footer({ lang, dict }: { lang: Locale; dict: any }) {
|
||||
{/* Big CTA */}
|
||||
<div className="border-b border-[#C8C2B8] px-6 py-20">
|
||||
<div className="max-w-7xl mx-auto flex flex-col md:flex-row items-center justify-between gap-8">
|
||||
<h2 className="font-display font-black text-4xl sm:text-5xl lg:text-6xl uppercase text-[#0A0A0A] leading-[0.9]">
|
||||
Ready to build<br />
|
||||
<h2 className="font-display font-black text-4xl sm:text-5xl lg:text-6xl text-[#0A0A0A] leading-[0.9]">
|
||||
ready to build<br />
|
||||
<span className="text-stroke">the impossible?</span>
|
||||
</h2>
|
||||
<Link
|
||||
|
||||
Reference in New Issue
Block a user