Skip to content

Commit

Permalink
fix: set browser cache time to match cacheMaxAgeSeconds
Browse files Browse the repository at this point in the history
  • Loading branch information
harlan-zw committed Jan 6, 2024
1 parent 518b33b commit 00d176e
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ export default defineEventHandler(async (e) => {
if (!path.endsWith('-sitemap.xml'))
return

const { sitemaps } = useSimpleSitemapRuntimeConfig()
const runtimeConfig = useSimpleSitemapRuntimeConfig()
const { sitemaps } = runtimeConfig

const sitemapName = path
.replace('-sitemap.xml', '')
Expand All @@ -26,5 +27,5 @@ export default defineEventHandler(async (e) => {
...sitemaps.chunks,
sitemapName,
}
: sitemaps[sitemapName])
: sitemaps[sitemapName], runtimeConfig)
})
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import { useSimpleSitemapRuntimeConfig } from '../utils'
import { useRuntimeConfig } from '#imports'

export default defineEventHandler(async (e) => {
const { sitemaps } = useSimpleSitemapRuntimeConfig()
const runtimeConfig = useSimpleSitemapRuntimeConfig()
const { sitemaps } = runtimeConfig
// we need to check if we're rendering multiple sitemaps from the index sitemap
if ('index' in sitemaps) {
// redirect to sitemap_index.xml (302 in dev to avoid caching issues)
return sendRedirect(e, withBase('/sitemap_index.xml', useRuntimeConfig().app.baseURL), process.dev ? 302 : 301)
}

return createSitemap(e, Object.values(sitemaps)[0])
return createSitemap(e, Object.values(sitemaps)[0], runtimeConfig)
})
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ import { useSimpleSitemapRuntimeConfig } from '../utils'
import { createSitePathResolver, useSiteConfig } from '#imports'

export default defineEventHandler(async (e) => {
setHeader(e, 'Content-Type', 'application/xslt+xml')
if (!process.dev)
setHeader(e, 'Cache-Control', 'max-age=600, must-revalidate')

const fixPath = createSitePathResolver(e, { absolute: false, withBase: true })

const { sitemapName: fallbackSitemapName, version, xslColumns, xslTips } = useSimpleSitemapRuntimeConfig()
const { sitemapName: fallbackSitemapName, cacheMaxAgeSeconds, version, xslColumns, xslTips } = useSimpleSitemapRuntimeConfig()
setHeader(e, 'Content-Type', 'application/xslt+xml')
if (cacheMaxAgeSeconds)
setHeader(e, 'Cache-Control', `public, max-age=${cacheMaxAgeSeconds}, must-revalidate`)
else
setHeader(e, 'Cache-Control', `no-cache, no-store`)

const svgIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="icon" style="margin-right: 4px; font-size: 25px;" width="1em" height="1em" viewBox="0 0 32 32"><path fill="#93c5fd" d="M4 26h4v4H4zm10 0h4v4h-4zm10 0h4v4h-4zm1-10h-8v-2h-2v2H7a2.002 2.002 0 0 0-2 2v6h2v-6h8v6h2v-6h8v6h2v-6a2.002 2.002 0 0 0-2-2zM9 2v10h14V2zm2 2h2v6h-2zm10 6h-6V4h6z"></path></svg>`
const creditName = `<a href="https://github.com/nuxt-modules/sitemap" style="color: black; display: flex; align-items: center; font-weight: 500;" target="_blank" rel="noopener">${svgIcon} Nuxt
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { defineEventHandler, getQuery, setHeader } from 'h3'
import { useSimpleSitemapRuntimeConfig } from '../utils'
import { buildSitemapIndex } from '../sitemap/builder/sitemap-index'
import { createSitePathResolver, useNitroApp } from '#imports'

export default defineEventHandler(async (e) => {
const canonicalQuery = getQuery(e).canonical
const isShowingCanonical = typeof canonicalQuery !== 'undefined' && canonicalQuery !== 'false'
const runtimeConfig = useSimpleSitemapRuntimeConfig()
let sitemap = (await buildSitemapIndex({
event: e,
canonicalUrlResolver: createSitePathResolver(e, { canonical: isShowingCanonical || !import.meta.dev, absolute: true, withBase: true }),
Expand All @@ -18,8 +20,9 @@ export default defineEventHandler(async (e) => {
sitemap = ctx.sitemap

setHeader(e, 'Content-Type', 'text/xml; charset=UTF-8')
if (!import.meta.dev)
setHeader(e, 'Cache-Control', 'max-age=600, must-revalidate')

if (runtimeConfig.cacheMaxAgeSeconds)
setHeader(e, 'Cache-Control', `public, max-age=${runtimeConfig.cacheMaxAgeSeconds}, must-revalidate`)
else
setHeader(e, 'Cache-Control', `no-cache, no-store`)
return sitemap
})
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,10 @@ export async function createSitemap(e: H3Event, definition: SitemapDefinition) {
sitemap = ctx.sitemap
// need to clone the config object to make it writable
setHeader(e, 'Content-Type', 'text/xml; charset=UTF-8')
if (!process.dev)
setHeader(e, 'Cache-Control', 'max-age=600, must-revalidate')
if (runtimeConfig.cacheMaxAgeSeconds)
setHeader(e, 'Cache-Control', `public, max-age=${runtimeConfig.cacheMaxAgeSeconds}, must-revalidate`)
else
setHeader(e, 'Cache-Control', `no-cache, no-store`)
e.context._isSitemap = true
return sitemap
}

0 comments on commit 00d176e

Please sign in to comment.