【问题标题】:Is it acceptable to mix http versions on a Drupal site?在 Drupal 站点上混合 http 版本是否可以接受?
【发布时间】:2011-01-25 20:29:04
【问题描述】:
我最近不得不对核心模块进行更改,这意味着我的错误页面是使用 HTTP 1.0 发送的,而我网站的其余部分是 HTTP 1.1。背景是here 和here。我看到的建议表明,让一个站点为不同的页面使用不同版本的 HTTP 是一个坏主意,例如here,但他们没有说明会出现什么问题。似乎 http 1.1 以 allowing persistent connections and better caching 的形式提供了一些性能改进,如果我可以在我的某些页面上避免它,我不想失去这些东西......因此混合了 http 版本。
我会走向灾难吗?或者,http 1.1 的性能提升实际上是否足够小,我应该考虑放弃它以便更好地实践?
【问题讨论】:
标签:
performance
http
drupal
【解决方案1】:
我最近不得不对核心模块进行更改
不要那样做!如果有任何可能,请滚动一个模块。如果核心有问题,请提交补丁(它将帮助其他开发者,也让您更容易保持最新状态)。
HTTP 问题是一个棘手的问题。正如您所说,HTTP 1.1 添加了持久连接之类的东西,您的浏览器可能会决定在您的网站上使用它们。我不知道如果网站突然发出 HTTP 1.0 浏览器会怎样,也不知道如果通过持久连接发送 HTTP 1.0 响应会发生什么。
但是,您链接的背景问题是针对非常具体的情况 - 反向代理 (nginx) 位于您的站点前面。如果是这种情况,请继续阅读:
直接访问您网站的唯一代理是 nginx。只要 nginx 工作,你就没有问题。将您的网站作为 HTTP 1.1 提供给 nginx 没有任何好处,因为它仅支持 1.0 进行代理。但是,nginx 会以 HTTP 1.1 透明地处理与您的用户的连接 - 即他们可以使用持久连接等,而 nginx 在后台建立和拆除与后端的连接。
因此,我的建议是,将您的整个网站降为 HTTP 1.0,并验证 nginx 是否仍将其作为 HTTP 1.1 提供服务。您可能会发现 404 标头仍在转义,但我认为 nginx 也会正确捕获和处理它。测试并找出答案!