我注意到 CloudFlare 和 Google 的 Web 服务器都使用小写的响应标头。这只是为了好看,还是真的能提高性能?我正在考虑为我的自定义 nginx 构建这样做,但到目前为止,我还不确定是否会产生任何负面/正面后果。我知道 HTTP 1.1 上的 RFC 2616 规范规定标头不区分大小写,所以我确信这不会引起任何问题,否则 Google 和 CloudFlare 就不会使用它们了。
来自 google.com 的示例响应标头:
HTTP/1.1 200 正常 状态:200 OK 版本:HTTP/1.1 缓存控制:私有,最大年龄=0 内容编码:gzip 内容类型:text/html;字符集=UTF-8 日期:2013 年 1 月 22 日星期二 20:58:07 GMT 到期时间:-1 服务器:gws x-frame-options: SAMEORIGIN x-xss-protection: 1; 模式=阻止
答案1
正如你所指出的,RFC 2616HTTP 标头(实际上,协议中的许多内容)不区分大小写。
为了便于阅读,您可以使用驼峰式大小写或大写字母,或者您可以像这样输入,这会惹恼任何需要调试您的 HTTP 交换的人。
Google 和 CloudFlare 使用 SPDY 协议(HTTP 协议旁边),该协议明确要求小写标题。
小写字符的输入速度更快(不需要使用 Shift 键),并且可以在开发过程中节省整整一秒钟,但使用它们对性能没有任何影响 - 小写字母在线上并不比大写字母“小”。
如果您知道所有内容都将使用小写,则可以避免在软件中进行不区分大小写的解析/比较,以牺牲稳健性(和 RFC 一致性)换取边际速度提升。
但这当然不是一个好主意(您不知道您的客户端将发送什么)。除非有充分的理由,否则我根本不会乱改 nginx 中的标头处理。它已经写好了,它有效,如果您开始乱改它,您更有可能破坏某些东西而不是改进任何东西。