Ben*_*eni 60 http httpresponse http-headers
需要从服务器向客户端发送哪些HTTP响应头?
我正在努力优化HTTP响应头以最小化HTTP响应开销.我知道"开销"有点夸张,但我喜欢干净的输出.
我看到很多网站发送冗余缓存标头.
例如
它是多余的同时指定Expires和Cache-Control: max-age,或同时指定Last-Modified和ETag.
Why*_*rrh 57
这取决于您定义的所需内容:无论在什么情况下都没有必须与每个响应一起发送的头字段,但是您确实应该发送头字段.接近的唯一标题字段是Date,但即使它有不需要它的情况.
在RFC 2119的说法中,术语必须意味着某些东西是规范的要求而不满足要求将是无效的.有由RFC中定义无头字段7230,7231,7232,7233,7234,或7235即必须由原始服务器发送的所有情况.
例如,可以省略以下标题(尽管您可能应该发送它们):
如果源服务器
Date没有能够在协调世界时提供合理近似当前实例的时钟,则它必须不发送头字段.Date如果响应在1xx(信息)或5xx(服务器错误)类状态代码中,则源服务器可以发送头字段.原始服务器必须Date在所有其他情况下发送头字段.
注意引用的最后一句.该Date头字段必须如果原始服务器能够提供在UTC日期的"合理的近似度"的,但也只是从自身歪曲停止服务器发送.
源服务器可以
Server在其响应中生成字段.
除了[有限数量的预定义情况]之外,如果没有
Transfer-Encoding,原始服务器应该Content-Length在发送完整标题部分之前知道有效负载主体大小时发送标题字段.
对主题Content-Length和Transfer-Encoding,请注意,既不可以被发送,在这种情况下,响应的长度"由八位字节的数目确定的接收之前在服务器关闭连接".
如果
Content-Type不存在标题字段,则接收方可以采用媒体类型application/octet-stream(RFC2046,第4.5.1节)或检查数据以确定其类型.
在某些情况下,可能需要特定的标头,例如:
Connection: close每个没有1xx状态代码的响应.Allow在405(Method Not Allowed)响应中生成标头.WWW-Authenticate包含至少一个质询的头字段.Mar*_*ham 22
它取决于响应的具体情况,但通常来自原始服务器的响应应具有:
和Content-Length,Transfer-Encoding或Connection:close.
如果要进行缓存,请添加Cache-Control(例如,使用max-age); 过期通常不再需要.如果您希望客户端能够验证,请添加Last-Modified或ETag.
| 归档时间: |
|
| 查看次数: |
38101 次 |
| 最近记录: |