diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-09-30 18:39:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-30 18:39:55 +0200 |
commit | 68e5cdaff0620b497e265d6e50bae6e994e86144 (patch) | |
tree | 8ae18f6d75bdc7bf70dc3ceaa13af9536c67da10 /ext/fetch/20_headers.js | |
parent | ee2e25fba76a3d25df9d0d5d8d4d0286be915043 (diff) |
perf(web): ~400x faster http header trimming (#12277)
Use a regex substring match with a first/last char fastpath instead of 2 regex replaces. Roughly ~400x faster (423ms vs 0.7ms in profiled runs)
Diffstat (limited to 'ext/fetch/20_headers.js')
-rw-r--r-- | ext/fetch/20_headers.js | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/ext/fetch/20_headers.js b/ext/fetch/20_headers.js index 67c5d0e65..c35c745b5 100644 --- a/ext/fetch/20_headers.js +++ b/ext/fetch/20_headers.js @@ -15,12 +15,11 @@ const { HTTP_TAB_OR_SPACE_PREFIX_RE, HTTP_TAB_OR_SPACE_SUFFIX_RE, - HTTP_WHITESPACE_PREFIX_RE, - HTTP_WHITESPACE_SUFFIX_RE, HTTP_TOKEN_CODE_POINT_RE, byteLowerCase, collectSequenceOfCodepoints, collectHttpQuotedString, + httpTrim, } = window.__bootstrap.infra; const { ArrayIsArray, @@ -59,17 +58,7 @@ * @returns {string} */ function normalizeHeaderValue(potentialValue) { - potentialValue = StringPrototypeReplaceAll( - potentialValue, - HTTP_WHITESPACE_PREFIX_RE, - "", - ); - potentialValue = StringPrototypeReplaceAll( - potentialValue, - HTTP_WHITESPACE_SUFFIX_RE, - "", - ); - return potentialValue; + return httpTrim(potentialValue); } /** @@ -95,7 +84,7 @@ // Regex matching illegal chars in a header value // deno-lint-ignore no-control-regex - const ILLEGAL_VALUE_CHARS = /[\x00\x0A\x0D]/; + const ILLEGAL_VALUE_CHARS = /[\x00\x0A\x0D]/g; /** * https://fetch.spec.whatwg.org/#concept-headers-append |