Caching time

This commit is contained in:
journey-ad 2024-06-14 09:54:45 +08:00
parent 3a88b39e3b
commit 3b2007de8d
6 changed files with 22 additions and 9 deletions

View File

@ -88,5 +88,11 @@
"next": ["const", "let", "var"] "next": ["const", "let", "var"]
} }
] ]
} },
"prettier/prettier": [
"warn",
{
"endOfLine": "auto"
}
]
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 158 KiB

View File

@ -26,7 +26,7 @@ const query = gql`
`; `;
// Function to handle GET requests // Function to handle GET requests
export async function GET(request: Request) { const handler = async(request: Request) => {
const { searchParams } = new URL(request.url); const { searchParams } = new URL(request.url);
const hash = searchParams.get("hash"); const hash = searchParams.get("hash");
@ -34,7 +34,7 @@ export async function GET(request: Request) {
if (!hash) { if (!hash) {
return NextResponse.json( return NextResponse.json(
{ {
message: "hash is required", message: "`hash` is required",
status: 400, status: 400,
}, },
{ {
@ -76,3 +76,5 @@ export async function GET(request: Request) {
); );
} }
} }
export { handler as GET, handler as POST };

View File

@ -57,7 +57,7 @@ const schema = z.object({
withTotalCount: z.coerce.boolean().default(false), withTotalCount: z.coerce.boolean().default(false),
}); });
export async function GET(request: Request) { const handler = async (request: Request) => {
// Extract search parameters from the request URL // Extract search parameters from the request URL
const { searchParams } = new URL(request.url); const { searchParams } = new URL(request.url);
const params = Object.fromEntries(searchParams.entries()); const params = Object.fromEntries(searchParams.entries());
@ -92,12 +92,13 @@ export async function GET(request: Request) {
variables: { variables: {
queryInput: safeParams, queryInput: safeParams,
}, },
fetchPolicy: "no-cache",
}); });
return NextResponse.json( return NextResponse.json(
{ {
data: data.search, data: data.search,
message: "Success", message: "success",
status: 200, status: 200,
}, },
{ {
@ -119,3 +120,5 @@ export async function GET(request: Request) {
); );
} }
} }
export { handler as GET, handler as POST };

View File

@ -14,7 +14,9 @@ async function fetchData(hash64: string) {
notFound(); notFound();
} }
const data = await apiFetch(`/api/detail?hash=${hash}`); // Fetch data from API const data = await apiFetch(`/api/detail?hash=${hash}`, {
next: { revalidate: 60 * 60 * 24 * 7 }, // cache for 7 days
});
return data; return data;
} }

View File

@ -1,5 +1,4 @@
import { Metadata } from "next"; import { Metadata } from "next";
import { redirect } from "next/navigation";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Link } from "@nextui-org/react"; import { Link } from "@nextui-org/react";
@ -8,7 +7,6 @@ import SearchResultsList from "@/components/SearchResultsList";
import apiFetch from "@/utils/api"; import apiFetch from "@/utils/api";
import { MagnetIcon } from "@/components/icons"; import { MagnetIcon } from "@/components/icons";
import { siteConfig } from "@/config/site"; import { siteConfig } from "@/config/site";
import { Toast } from "@/utils";
import { import {
DEFAULT_SORT_TYPE, DEFAULT_SORT_TYPE,
SEARCH_PAGE_SIZE, SEARCH_PAGE_SIZE,
@ -70,7 +68,9 @@ async function fetchData({
} }
try { try {
const resp = await apiFetch(`/api/search?${params.toString()}`); const resp = await apiFetch(`/api/search?${params.toString()}`, {
next: { revalidate: 60 * 60 * 6 }, // cache for 6 hours
});
if (isNewSearch) { if (isNewSearch) {
totalCount = resp.data.total_count; totalCount = resp.data.total_count;