URLPattern 路由匹配与边缘路由:模式定义、匹配与性能技术背景URLPattern 提供原生的 URL 模式匹配与参数解析能力,适用于浏览器端路由与边缘中间件的高性能匹配,替代手写正则并提升可读性与维护性。核心内容浏览器端路由匹配const patterns = [
new URLPattern({ pathname: '/products/:id' }),
new URLPattern({ pathname: '/users/:userId/orders/:orderId' })
];
function match(url: string) {
for (const p of patterns) {
const m = p.exec({ pathname: url }) as any;
if (m) return { pattern: p, groups: m.pathname.groups };
}
return null;
}
// 使用
console.log(match('/users/42/orders/abc')); // { groups: { userId: '42', orderId: 'abc' } }
边缘路由(Workers/中间件)export default {
async fetch(req) {
const url = new URL(req.url);
const routes = [
new URLPattern({ pathname: '/api/products/:id' }),
new URLPattern({ pathname: '/assets/:file' })
];
for (const r of routes) {
const m = r.exec(url);
if (m) {
if (r.pathname.input === '/api/products/:id') {
const id = m.pathname.groups.id;
return fetch(`https://api.example.com/products/${id}`);
}
if (r.pathname.input === '/assets/:file') {
const file = m.pathname.groups.file;
return fetch(`https://cdn.example.com/${file}`);
}
}
}
return new Response('Not Found', { status: 404 });
}
};
技术验证参数在 Chrome 128/Edge 130 与 Edge Workers:路由匹配耗时:P95 < 1ms/请求正则维护成本:下降 ≥ 70%路由错误率:下降 20–40%应用场景浏览器端轻量路由与参数解析边缘中间件的高性能路由分发最佳实践将模式组织在统一表并注释含义对外部资源路由使用 URLPattern 提升可读性在复杂场景下搭配缓存与优先级策略

发表评论 取消回复