优化 Vercel Fluid CPU:API加CDN缓存、缩小middleware范围、跳过公共API的Supabase身份转发

- 7条GET路由加 s-maxage + stale-while-revalidate,fetch 改为 next revalidate
- middleware matcher 从全匹配缩小到9条需auth的路径,移除 isStaticAsset
- 8条公共API路由加 includeSupabaseIdentity: false
- backend-auth getSession 为空时跳过 getUser
- subscription-help 加 I18nProvider,移除 force-dynamic → 静态预渲染
- next.config.mjs 加静态资源 immutable 缓存头

Tested: npx tsc --noEmit 通过,npm run build 通过
This commit is contained in:
2569718930@qq.com
2026-05-13 14:23:04 +08:00
parent 30b289ec8f
commit 40f231b76d
13 changed files with 112 additions and 75 deletions
+10 -5
View File
@@ -7,6 +7,7 @@ import {
buildProxyExceptionResponse,
buildUpstreamErrorResponse,
} from "@/lib/api-proxy";
import { buildCachedJsonResponse } from "@/lib/http-cache";
const API_BASE = process.env.POLYWEATHER_API_BASE_URL;
@@ -19,10 +20,12 @@ export async function GET(req: NextRequest) {
}
try {
const auth = await buildBackendRequestHeaders(req);
const auth = await buildBackendRequestHeaders(req, {
includeSupabaseIdentity: false,
});
const res = await fetch(`${API_BASE}/api/system/status`, {
headers: auth.headers,
cache: "no-store",
next: { revalidate: 30 },
});
if (!res.ok) {
const raw = await res.text();
@@ -33,9 +36,11 @@ export async function GET(req: NextRequest) {
}
const data = await res.json();
const response = NextResponse.json(data, {
headers: { "Cache-Control": "no-store" },
});
const response = buildCachedJsonResponse(
req,
data,
"public, max-age=0, s-maxage=30, stale-while-revalidate=120",
);
return applyAuthResponseCookies(response, auth.response);
} catch (error) {
return buildProxyExceptionResponse(error, {