From: Ben Darnell Date: Mon, 2 May 2011 03:48:55 +0000 (-0700) Subject: Memoize HTTPHeaders._normalize_name X-Git-Tag: v2.0.0~88 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3cc7f2c54c25aa672f34185f2b94c8be31524469;p=thirdparty%2Ftornado.git Memoize HTTPHeaders._normalize_name --- diff --git a/tornado/httputil.py b/tornado/httputil.py index 95611d2fa..d40ebc6a3 100755 --- a/tornado/httputil.py +++ b/tornado/httputil.py @@ -128,6 +128,8 @@ class HTTPHeaders(dict): self[k] = v _NORMALIZED_HEADER_RE = re.compile(r'^[A-Z0-9][a-z0-9]*(-[A-Z0-9][a-z0-9]*)*$') + _normalized_headers = {} + @staticmethod def _normalize_name(name): """Converts a name to Http-Header-Case. @@ -135,9 +137,15 @@ class HTTPHeaders(dict): >>> HTTPHeaders._normalize_name("coNtent-TYPE") 'Content-Type' """ - if HTTPHeaders._NORMALIZED_HEADER_RE.match(name): - return name - return "-".join([w.capitalize() for w in name.split("-")]) + try: + return HTTPHeaders._normalized_headers[name] + except KeyError: + if HTTPHeaders._NORMALIZED_HEADER_RE.match(name): + normalized = name + else: + normalized = "-".join([w.capitalize() for w in name.split("-")]) + HTTPHeaders._normalized_headers[name] = normalized + return normalized def doctests():