概览Edge Middleware 能在请求进入应用前进行分流与重写。结合 `accept-language` 与随机分组,可实现国际化路由选择与 A/B 实验治理,并通过 Cookie 保持会话一致性。middleware.tsimport { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
export function middleware(req: NextRequest) {
const url = req.nextUrl.clone()
const lang = req.headers.get('accept-language') || ''
const locale = lang.startsWith('zh') ? 'zh' : 'en'
const ab = req.cookies.get('ab')?.value || (Math.random() < 0.5 ? 'A' : 'B')
if (!req.cookies.get('ab')) {
const res = NextResponse.next()
res.cookies.set('ab', ab, { path: '/' })
return res
}
if (url.pathname === '/') {
url.pathname = `/${locale}/${ab}`
return NextResponse.rewrite(url)
}
return NextResponse.next()
}
export const config = { matcher: ['/((?!_next|api|static).*)'] }
治理要点在边缘分流减少回源,保障低延迟与一致性。使用 Cookie 固定分组,确保用户跨页体验一致。与实验平台或日志系统结合,记录分组与转化指标。验证与指标浏览器:现代浏览器;边缘环境兼容Next.js:15.0+;Edge Runtime:稳定分流正确、重写可靠;国际化选择与 A/B 实验命中率稳定

发表评论 取消回复