From 42da3849f560ae063d6818ee2ba147cb1b4ebc93 Mon Sep 17 00:00:00 2001 From: seaHi Date: Fri, 25 Sep 2026 08:54:39 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=89=8D=E5=8F=B0?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=80=A7=E8=83=BD=E3=80=81=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E5=A4=B4=E7=BC=93=E5=AD=98=E6=8E=A7=E5=88=B6=E5=8F=8A=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E6=91=98=E8=A6=81=E5=8A=A0=E8=BD=BD=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/+page.server.ts | 10 ++++++++-- src/routes/+page.svelte | 9 +++++++-- src/routes/[slug]/+page.server.ts | 12 ++++++++++-- src/routes/[slug]/+page.svelte | 2 +- src/routes/posts/[slug]/+page.server.ts | 10 ++++++++-- src/routes/posts/[slug]/+page.svelte | 2 +- 6 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index cbedebf..d74e6f9 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -3,7 +3,12 @@ import { createExcerpt } from '$lib/markdown/excerpt'; import type { PageServerLoad } from './$types'; -export const load: PageServerLoad = async ({ platform }) => { +export const load: PageServerLoad = async ({ platform, setHeaders }) => { + // Enable CDN Edge caching for 1 hour, browser cache for 1 minute + setHeaders({ + 'Cache-Control': 'public, max-age=60, s-maxage=3600' + }); + const db = platform?.env?.DB; if (!db) { @@ -33,9 +38,10 @@ export const load: PageServerLoad = async ({ platform }) => { } try { + // Optimization: Use substr to prevent fetching megabytes of content just for excerpts const { results } = await db .prepare( - `SELECT p.id, p.slug, p.title, p.content, p.cover, p.published_at as date + `SELECT p.id, p.slug, p.title, SUBSTR(p.content, 1, 2000) AS content, p.cover, p.published_at as date FROM posts p ORDER BY p.published_at DESC LIMIT 10` ) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 4bfc3f3..6903f85 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -14,12 +14,17 @@
- {#each data.posts as post (post.id || post)} + {#each data.posts as post, i (post.id || post)}
{#if post.cover}
- {post.title} + {post.title}
{/if}
diff --git a/src/routes/[slug]/+page.server.ts b/src/routes/[slug]/+page.server.ts index c6f29c0..126abf1 100644 --- a/src/routes/[slug]/+page.server.ts +++ b/src/routes/[slug]/+page.server.ts @@ -2,8 +2,12 @@ import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; +import { renderMarkdown } from '$lib/markdown/renderer'; -export const load: PageServerLoad = async ({ params, platform, parent }) => { +export const load: PageServerLoad = async ({ params, platform, parent, setHeaders }) => { + setHeaders({ + 'Cache-Control': 'public, max-age=60, s-maxage=3600' + }); const db = platform?.env?.DB; const slug = params.slug; const { aliases } = await parent(); @@ -33,7 +37,11 @@ export const load: PageServerLoad = async ({ params, platform, parent }) => { } return { - page + page: { + ...page, + content: undefined, + htmlContent: renderMarkdown(page.content) + } }; } catch (err: unknown) { if ((err as any)?.status === 404) throw err; diff --git a/src/routes/[slug]/+page.svelte b/src/routes/[slug]/+page.svelte index b603d84..9b33d36 100644 --- a/src/routes/[slug]/+page.svelte +++ b/src/routes/[slug]/+page.svelte @@ -17,7 +17,7 @@

{data.page.title}

- +
diff --git a/src/routes/posts/[slug]/+page.server.ts b/src/routes/posts/[slug]/+page.server.ts index 65f021e..f7f301d 100644 --- a/src/routes/posts/[slug]/+page.server.ts +++ b/src/routes/posts/[slug]/+page.server.ts @@ -1,5 +1,6 @@ import type { PageServerLoad } from './$types'; import { error, isHttpError } from '@sveltejs/kit'; +import { renderMarkdown } from '$lib/markdown/renderer'; interface PostRow { id: number; @@ -17,7 +18,10 @@ interface PostRow { series_weight: number | null; } -export const load: PageServerLoad = async ({ platform, params, parent }) => { +export const load: PageServerLoad = async ({ platform, params, parent, setHeaders }) => { + setHeaders({ + 'Cache-Control': 'public, max-age=60, s-maxage=3600' + }); const db = platform?.env?.DB; const { slug } = params; const { aliases } = await parent(); @@ -51,7 +55,7 @@ export const load: PageServerLoad = async ({ platform, params, parent }) => { slug === 'hello-world' ? 'Hello, BlogFlare! (Fallback)' : 'The Beauty of Typecho Theme VOID', - content: dummyMarkdown, + htmlContent: renderMarkdown(dummyMarkdown), cover: null, date: '2026-07-12', author: 'Admin' @@ -129,6 +133,8 @@ export const load: PageServerLoad = async ({ platform, params, parent }) => { return { post: { ...post, + content: undefined, + htmlContent: renderMarkdown(post.content), date: new Date(post.date as string).toLocaleDateString() }, tags, diff --git a/src/routes/posts/[slug]/+page.svelte b/src/routes/posts/[slug]/+page.svelte index f917fc4..109880d 100644 --- a/src/routes/posts/[slug]/+page.svelte +++ b/src/routes/posts/[slug]/+page.svelte @@ -157,7 +157,7 @@ {/if} - + {#if data.tags && data.tags.length > 0}