diff --git a/src/module.ts b/src/module.ts index 5d8beca99..b2853e5ea 100644 --- a/src/module.ts +++ b/src/module.ts @@ -416,6 +416,12 @@ export default defineNuxtModule({ nitroConfig.prerender.routes = nitroConfig.prerender.routes || [] nitroConfig.handlers = nitroConfig.handlers || [] + // Performance: Add ISR for API routes + if (!nuxt.options.dev && !nuxt.options._prepare) { + nuxt.options.routeRules = {} + nuxt.options.routeRules[`${options.api.baseURL}/query/**`] = { isr: true } + } + // Add server handlers nitroConfig.handlers.push( { diff --git a/src/runtime/server/api/navigation.ts b/src/runtime/server/api/navigation.ts index 30a5265ad..b5c763435 100644 --- a/src/runtime/server/api/navigation.ts +++ b/src/runtime/server/api/navigation.ts @@ -3,9 +3,9 @@ import { createNav } from '../navigation' import type { ParsedContent, ParsedContentMeta } from '../../types' import { getContentQuery } from '../../utils/query' import { isPreview } from '../preview' -import { cachedEventHandler } from '#imports' +import { eventHandler } from '#imports' -export default cachedEventHandler(async (event) => { +export default eventHandler(async (event) => { const query = getContentQuery(event) // Read from cache if not preview and there is no query @@ -50,7 +50,4 @@ export default cachedEventHandler(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 7de782a2f..5842cc9f4 100644 --- a/src/runtime/server/api/query.ts +++ b/src/runtime/server/api/query.ts @@ -1,9 +1,9 @@ import { createError } from 'h3' import { serverQueryContent } from '../storage' import { getContentQuery } from '../../utils/query' -import { useRuntimeConfig, cachedEventHandler } from '#imports' +import { useRuntimeConfig, eventHandler } from '#imports' -export default cachedEventHandler(async (event) => { +export default eventHandler(async (event) => { const query = getContentQuery(event) const { advanceQuery } = useRuntimeConfig().public.content.experimental @@ -39,7 +39,4 @@ export default cachedEventHandler(async (event) => { } return serverQueryContent(event, query).find() -}, { - maxAge: 31536000, - shouldBypassCache: () => !!import.meta.dev })