From 9bdec5dae71c4de259e4922808e96499401b9619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?AI=E4=B8=8D=E6=AD=A2=E8=AF=AD?= <12096460+jnMetaCode@users.noreply.github.com> Date: Tue, 23 Jun 2026 04:28:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(site):=20clean=20URL=20=E7=9A=84=20HTML=20?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E8=A2=AB=E8=BE=B9=E7=BC=98=E7=BC=93=E5=AD=98?= =?UTF-8?q?=EF=BC=88=E4=BF=AE=E5=A4=8D=E7=9C=8B=E5=88=B0=E6=97=A7=E5=86=85?= =?UTF-8?q?=E5=AE=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前不缓存规则是 /*.html,只匹配 .html 结尾路径;但 Cloudflare 服务的是 clean URL(/、/skills/x、/en/x,不带 .html),这些 HTML 没拿到 no-cache 头 → 被边缘缓存 → 部署后用户仍看到旧内容(如刚加的 aiOlaOla CTA 不显示)。 改为:/* 默认 max-age=0 must-revalidate(覆盖所有 clean URL HTML);带版本 号的 styles.css/app.js 与 /assets/* 由更具体规则覆盖为长缓存 immutable。 --- site/build.mjs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/site/build.mjs b/site/build.mjs index daa1880..746aa81 100644 --- a/site/build.mjs +++ b/site/build.mjs @@ -635,7 +635,11 @@ function build() { "form-action 'self'", ].join('; '); - // Cloudflare Pages:全站安全响应头(/*)+ 缓存策略(静态资源长缓存,HTML 不缓存) + // Cloudflare Pages:全站安全响应头 + 缓存策略。 + // 默认 /* 不缓存(must-revalidate)——这样 clean URL 的 HTML(/、/skills/x、 + // /en/x,均不带 .html)也能即时更新,不会被边缘缓存旧内容。 + // 带内容 hash 版本号的资源(styles.css?v= / app.js?v=)与 /assets/* 由更具体 + // 规则覆盖为长缓存 immutable(内容变 → URL 变 → 自动取新)。 writeFileSync(join(DIST, '_headers'), '/*\n' + ' Content-Security-Policy: ' + csp + '\n' + @@ -644,10 +648,10 @@ function build() { ' Referrer-Policy: no-referrer\n' + ' Cross-Origin-Opener-Policy: same-origin\n' + ' Permissions-Policy: geolocation=(), microphone=(), camera=()\n' + + ' Cache-Control: public, max-age=0, must-revalidate\n' + '/assets/*\n Cache-Control: public, max-age=31536000, immutable\n' + - '/styles.css\n Cache-Control: public, max-age=86400\n' + - '/app.js\n Cache-Control: public, max-age=86400\n' + - '/*.html\n Cache-Control: public, max-age=0, must-revalidate\n'); + '/styles.css\n Cache-Control: public, max-age=31536000, immutable\n' + + '/app.js\n Cache-Control: public, max-age=31536000, immutable\n'); const pages = 2 + skills.length * 2; console.log(`✅ 生成 ${pages} 个页面:中/英首页 + ${skills.length} 个 skill × 2 语言详情页 → ${DIST}`);