From d2bcf70ff5102e2e717565499bee9663e7295bcd Mon Sep 17 00:00:00 2001 From: Farnabaz Date: Tue, 19 Dec 2023 16:26:03 +0100 Subject: [PATCH] feat(api): cache api endpoints --- src/runtime/server/api/navigation.ts | 7 +++++-- src/runtime/server/api/query.ts | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/runtime/server/api/navigation.ts b/src/runtime/server/api/navigation.ts index a779dcf58..95986675b 100644 --- a/src/runtime/server/api/navigation.ts +++ b/src/runtime/server/api/navigation.ts @@ -1,11 +1,11 @@ -import { defineEventHandler } from 'h3' +import { cachedEventHandler } from 'nitropack/dist/runtime/cache' import { cacheStorage, serverQueryContent } from '../storage' import { createNav } from '../navigation' import type { ParsedContent, ParsedContentMeta } from '../../types' import { getContentQuery } from '../../utils/query' import { isPreview } from '../preview' -export default defineEventHandler(async (event) => { +export default cachedEventHandler(async (event) => { const query = getContentQuery(event) // Read from cache if not preview and there is no query @@ -50,4 +50,7 @@ export default defineEventHandler(async (event) => { }, {} as Record) return createNav((contents?.result || contents) as ParsedContentMeta[], configs) +}, { + maxAge: 31536000, + shouldBypassCache: () => !!import.meta.dev }) diff --git a/src/runtime/server/api/query.ts b/src/runtime/server/api/query.ts index 63572593c..4d0395af9 100644 --- a/src/runtime/server/api/query.ts +++ b/src/runtime/server/api/query.ts @@ -1,9 +1,10 @@ -import { createError, defineEventHandler } from 'h3' +import { createError } from 'h3' +import { cachedEventHandler } from 'nitropack/dist/runtime/cache' import { serverQueryContent } from '../storage' import { getContentQuery } from '../../utils/query' import { useRuntimeConfig } from '#imports' -export default defineEventHandler(async (event) => { +export default cachedEventHandler(async (event) => { const query = getContentQuery(event) const { advanceQuery } = useRuntimeConfig().public.content.experimental @@ -39,4 +40,7 @@ export default defineEventHandler(async (event) => { } return serverQueryContent(event, query).find() +}, { + maxAge: 31536000, + shouldBypassCache: () => !!import.meta.dev })