feat: implement caching strategy for API responses and adjust loading timeout in CoverClient for improved performance

This commit is contained in:
Julien Froidefond
2025-10-17 23:20:42 +02:00
parent a22e77c4eb
commit ae4b766085
8 changed files with 58 additions and 20 deletions

View File

@@ -3,12 +3,16 @@ import { HomeService } from "@/lib/services/home.service";
import { ERROR_CODES } from "@/constants/errorCodes";
import { AppError } from "@/utils/errors";
import { getErrorMessage } from "@/utils/errors";
export const dynamic = "force-dynamic";
export const revalidate = 60;
export async function GET() {
try {
const data = await HomeService.getHomeData();
return NextResponse.json(data);
return NextResponse.json(data, {
headers: {
'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
}
});
} catch (error) {
console.error("API Home - Erreur:", error);
if (error instanceof AppError) {

View File

@@ -4,7 +4,7 @@ import { ERROR_CODES } from "@/constants/errorCodes";
import { AppError } from "@/utils/errors";
import { getErrorMessage } from "@/utils/errors";
import type { NextRequest } from "next/server";
export const dynamic = "force-dynamic";
export const revalidate = 60;
const DEFAULT_PAGE_SIZE = 20;
@@ -26,7 +26,14 @@ export async function GET(
LibraryService.getLibrary(libraryId)
]);
return NextResponse.json({ series, library });
return NextResponse.json(
{ series, library },
{
headers: {
'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
}
}
);
} catch (error) {
console.error("API Library Series - Erreur:", error);
if (error instanceof AppError) {

View File

@@ -4,7 +4,7 @@ import { ERROR_CODES } from "@/constants/errorCodes";
import { AppError } from "@/utils/errors";
import { getErrorMessage } from "@/utils/errors";
import type { NextRequest } from "next/server";
export const dynamic = "force-dynamic";
export const revalidate = 60;
const DEFAULT_PAGE_SIZE = 20;
@@ -25,7 +25,14 @@ export async function GET(
SeriesService.getSeries(seriesId)
]);
return NextResponse.json({ books, series });
return NextResponse.json(
{ books, series },
{
headers: {
'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
}
}
);
} catch (error) {
console.error("API Series Books - Erreur:", error);
if (error instanceof AppError) {

View File

@@ -5,7 +5,7 @@ import { AppError } from "@/utils/errors";
import type { KomgaSeries } from "@/types/komga";
import { getErrorMessage } from "@/utils/errors";
import type { NextRequest } from "next/server";
export const dynamic = "force-dynamic";
export const revalidate = 60;
export async function GET(
request: NextRequest,
@@ -15,7 +15,11 @@ export async function GET(
const seriesId: string = (await params).seriesId;
const series: KomgaSeries = await SeriesService.getSeries(seriesId);
return NextResponse.json(series);
return NextResponse.json(series, {
headers: {
'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120'
}
});
} catch (error) {
console.error("API Series - Erreur:", error);
if (error instanceof AppError) {