From 86c72c2dc3757d436aead5a6196a70062b3e668e Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Sun, 3 May 2026 21:42:05 +0200 Subject: [PATCH] fix(apologetik): drop duplicate Cache-Control in child loads Layout already sets Cache-Control; SvelteKit throws when the same header is set twice in the load chain, 500ing /glaube/apologetik/pro and the parallel routes. --- package.json | 2 +- .../[apologetikSlug=apologetikSlug]/contra/+page.ts | 3 +-- .../contra/[argId]/[[archId]]/+page.ts | 3 +-- .../[apologetikSlug=apologetikSlug]/pro/+page.server.ts | 3 +-- .../pro/[posArgId]/[[voiceId]]/+page.server.ts | 7 +------ 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 0bfee282..4fb1bd5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homepage", - "version": "1.64.0", + "version": "1.64.1", "private": true, "type": "module", "scripts": { diff --git a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/+page.ts b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/+page.ts index 17b1af24..6c8835e0 100644 --- a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/+page.ts +++ b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/+page.ts @@ -1,8 +1,7 @@ import { getArchetypes, getArguments } from '$lib/data/apologetik'; import type { PageLoad } from './$types'; -export const load: PageLoad = async ({ parent, setHeaders }) => { - setHeaders({ 'Cache-Control': 'public, max-age=300, s-maxage=3600, stale-while-revalidate=86400' }); +export const load: PageLoad = async ({ parent }) => { const { lang } = await parent(); const [archetypes, args] = await Promise.all([getArchetypes(lang), getArguments(lang)]); return { archetypes, args }; diff --git a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/[argId]/[[archId]]/+page.ts b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/[argId]/[[archId]]/+page.ts index 022e43fa..0273993a 100644 --- a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/[argId]/[[archId]]/+page.ts +++ b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/contra/[argId]/[[archId]]/+page.ts @@ -5,8 +5,7 @@ import { generateBreadcrumbJsonLd } from '$lib/js/breadcrumbJsonLd'; import { m as faithM, faithSlugFromLang, apologetikSlug, type FaithLang } from '$lib/js/faithI18n'; import type { PageLoad } from './$types'; -export const load: PageLoad = async ({ params, parent, setHeaders }) => { - setHeaders({ 'Cache-Control': 'public, max-age=300, s-maxage=3600, stale-while-revalidate=86400' }); +export const load: PageLoad = async ({ params, parent }) => { const parentData = await parent(); const lang = parentData.lang as FaithLang; const [arg, archetypes, args] = await Promise.all([ diff --git a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/+page.server.ts b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/+page.server.ts index fe91c5bb..5e329564 100644 --- a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/+page.server.ts +++ b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/+page.server.ts @@ -7,8 +7,7 @@ import { } from '$lib/data/apologetik'; import { resolveScriptureForLang } from '$lib/server/scriptureLookup'; -export const load: PageServerLoad = async ({ parent, setHeaders }) => { - setHeaders({ 'Cache-Control': 'public, max-age=300, s-maxage=3600, stale-while-revalidate=86400' }); +export const load: PageServerLoad = async ({ parent }) => { const { lang } = await parent(); const [voices, layers, args] = await Promise.all([ getPosVoices(lang), diff --git a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/[posArgId]/[[voiceId]]/+page.server.ts b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/[posArgId]/[[voiceId]]/+page.server.ts index a2f30cd3..75321500 100644 --- a/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/[posArgId]/[[voiceId]]/+page.server.ts +++ b/src/routes/[faithLang=faithLang]/[apologetikSlug=apologetikSlug]/pro/[posArgId]/[[voiceId]]/+page.server.ts @@ -12,12 +12,7 @@ import { generateProArgArticleJsonLd } from '$lib/js/apologetikJsonLd'; import { generateBreadcrumbJsonLd } from '$lib/js/breadcrumbJsonLd'; import { m as faithM, faithSlugFromLang, apologetikSlug, type FaithLang } from '$lib/js/faithI18n'; -export const load: PageServerLoad = async ({ params, parent, setHeaders }) => { - // Pure static content — long-form prose with no per-user state. Cache aggressively - // at the edge so crawlers (and casual readers) get sub-50ms TTFB. Logged-in users - // still get fresh server-rendered pages because most reverse proxies vary on cookies. - setHeaders({ 'Cache-Control': 'public, max-age=300, s-maxage=3600, stale-while-revalidate=86400' }); - +export const load: PageServerLoad = async ({ params, parent }) => { const parentData = await parent(); const lang = parentData.lang as FaithLang; const [arg, voices, layers, args] = await Promise.all([