Skip to content

Commit d9757c4

Browse files
aster-voidclaude
andcommitted
meta: add Cache-Control headers for Cloudflare caching
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 04224a1 commit d9757c4

File tree

2 files changed

+40
-15
lines changed

2 files changed

+40
-15
lines changed

secrets.prod.yaml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ S3_SECRET_KEY: ENC[AES256_GCM,data:QEc9T5yC+iZoV403CqqBTJCsDCdzH2FV0vQoRlEU6vM0o
99
S3_BUCKET: ENC[AES256_GCM,data:kKVmATCe2JYggI5bXjch9kiCbqVb,iv:WBVmx8TWKbJ3xWHiGy3/Os4xlPfcuDMz3xoWnzsTato=,tag:BqnD6HXBC4A9qqeREcB6Sw==,type:str]
1010
S3_PUBLIC_URL: ENC[AES256_GCM,data:yF9V11xmPsO9fAyozCVUWwC+z16+guLMNA==,iv:n8mEi0E8bvxK68hHZ6yd8dBlfi10sETNNXQBMt1ygrw=,tag:7ZK8/MM2xVTi8N65q0+v5g==,type:str]
1111
sops:
12-
age:
13-
- recipient: age1gsn5pg5pkk89zsukc94gqwlu7zyrep0prm7pwc787tcegapgmvgqzeq64c
14-
enc: |
15-
-----BEGIN AGE ENCRYPTED FILE-----
16-
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwRWovR2lYZjk5UzQ0Y2Ri
17-
QXAxam5LaEY2S3hFREVEUHJzdDNQbCs2T3hnCkprMDNlamZPQmhvTXh1SUdOUHNX
18-
OEhTYWlLMVdsaVRuUDdPRVZvRmc3VkEKLS0tIGlOK1JScmJtQVJPWXErZkc2VVNR
19-
NHZSdEp1WGc4S2ppK1ZKcDZnU0JRQmMKJj4n6DBAozt2DTlYFIhd1jWWLGMYalAM
20-
+Txthl+D2hQNSITfK7jzVXIhk4z3g2ahNXscRmgrU9u4V0Jj6Gzz/g==
21-
-----END AGE ENCRYPTED FILE-----
22-
lastmodified: "2025-12-23T06:48:31Z"
23-
mac: ENC[AES256_GCM,data:51C/AiU7T7aqHxqvhl/+sc82nigPHlKzLDXqXDyfR5PGfNKsnP7/u/X3xsp6VhNv+itnRCp/29rG3qjKnbjm04uS28bIRmSzaUrDK6/b3ASnJIexhsuAeZFsjqPaJ0IpECdrmn7D2ZXrJQw7qx1LpKlFsHBK8awlE1JDcmdAFXY=,iv:hF63GDjwaKZ5t+/oN5heoFSLHuIJ9tgvqyHNoaDxmjA=,tag:L9gvHacn2UAi693OkVydGA==,type:str]
24-
unencrypted_suffix: _unencrypted
25-
version: 3.11.0
12+
age:
13+
- recipient: age1gsn5pg5pkk89zsukc94gqwlu7zyrep0prm7pwc787tcegapgmvgqzeq64c
14+
enc: |
15+
-----BEGIN AGE ENCRYPTED FILE-----
16+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwRWovR2lYZjk5UzQ0Y2Ri
17+
QXAxam5LaEY2S3hFREVEUHJzdDNQbCs2T3hnCkprMDNlamZPQmhvTXh1SUdOUHNX
18+
OEhTYWlLMVdsaVRuUDdPRVZvRmc3VkEKLS0tIGlOK1JScmJtQVJPWXErZkc2VVNR
19+
NHZSdEp1WGc4S2ppK1ZKcDZnU0JRQmMKJj4n6DBAozt2DTlYFIhd1jWWLGMYalAM
20+
+Txthl+D2hQNSITfK7jzVXIhk4z3g2ahNXscRmgrU9u4V0Jj6Gzz/g==
21+
-----END AGE ENCRYPTED FILE-----
22+
lastmodified: "2025-12-23T06:48:31Z"
23+
mac: ENC[AES256_GCM,data:51C/AiU7T7aqHxqvhl/+sc82nigPHlKzLDXqXDyfR5PGfNKsnP7/u/X3xsp6VhNv+itnRCp/29rG3qjKnbjm04uS28bIRmSzaUrDK6/b3ASnJIexhsuAeZFsjqPaJ0IpECdrmn7D2ZXrJQw7qx1LpKlFsHBK8awlE1JDcmdAFXY=,iv:hF63GDjwaKZ5t+/oN5heoFSLHuIJ9tgvqyHNoaDxmjA=,tag:L9gvHacn2UAi693OkVydGA==,type:str]
24+
unencrypted_suffix: _unencrypted
25+
version: 3.11.0

src/hooks.server.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
11
import { auth } from "$lib/server/drivers/auth";
22
import { svelteKitHandler } from "better-auth/svelte-kit";
33
import { building } from "$app/environment";
4+
import { sequence } from "@sveltejs/kit/hooks";
45
import type { Handle } from "@sveltejs/kit";
56

6-
export const handle: Handle = async ({ event, resolve }) => {
7+
const handleAuth: Handle = async ({ event, resolve }) => {
78
return await svelteKitHandler({ event, resolve, auth, building });
89
};
10+
11+
const handleCache: Handle = async ({ event, resolve }) => {
12+
const response = await resolve(event);
13+
const path = event.url.pathname;
14+
15+
// Skip if response already has Cache-Control
16+
if (response.headers.has("Cache-Control")) {
17+
return response;
18+
}
19+
20+
// Private routes: no caching
21+
if (path.startsWith("/api/auth") || path.startsWith("/admin")) {
22+
response.headers.set("Cache-Control", "private, no-store");
23+
return response;
24+
}
25+
26+
// Public pages: aggressive Cloudflare caching
27+
// s-maxage=3600: CDN caches for 1 hour
28+
// stale-while-revalidate=86400: serve stale for up to 1 day while revalidating
29+
response.headers.set("Cache-Control", "public, s-maxage=3600, stale-while-revalidate=86400");
30+
return response;
31+
};
32+
33+
export const handle = sequence(handleAuth, handleCache);

0 commit comments

Comments
 (0)