dotnet/aspnetcore
Voir sur GitHubPerf: add API to avoid regex matching rewrite rules unless necessary
Open
#5 984 ouverte le 30 août 2016
api-suggestionarea-middlewareenhancementfeature-rewrite-middlewarehelp wanted
Métriques du dépôt
- Stars
- (37 933 stars)
- Métriques de merge PR
- (Merge moyen 16j 9h) (258 PRs mergées en 30 j)
Description
Regex is an expensive part of the rewrite middleware a lot in order to do pattern matching. It is common for rewrite patterns to be led by a static prefix.
Example: "blogs/(.*)" => "api/blogs?id=$1"
For this rule, the middleware can avoid unnecessary regex allocations by only running the rule when the path begins with "/blogs/".
Possible API design:
RewriteOptions.AddRewrite(string prefix, string pattern, string urlResult) // prefix is static, doesn't container rules. If uri doesn't start with the prefix, skip this rule
RewriteOptions.Ignore(string prefix); // always skip rule processing for urls beginning with this prefix
Usage
RewriteOptions.AddRewrite(prefix: "/blogs/", pattern: "(.*)", urlResult: "/api/blogs?id=$1")
RewriteOptions.Ignore("/images/")