【发布时间】:2014-10-03 18:22:15
【问题描述】:
我用http://www.webpagetest.org工具检查了一个网页,这表明没有激活keep-alive。我对此进行了研究,并被引导至How can I enable keep-alive? 和Changing PHP $_SERVER['HTTP_CONNECTION'] value
据此,我在 .htaccess 文件中尝试了<ifModule mod_headers.c> Header set Connection keep-alive </ifModule>。 http://www.webpagetest.org 工具仍然显示保持活动未激活。
我联系了托管公司,他们说启用了 Keep-Alive。
我制作了一个简单的 html 测试文件(称为 test.html),它试图加载两个图像,一个来自未保持活动状态的服务器(称之为 notalive),另一个来自服务器(称之为活动) ) 表明http://www.webpagetest.org 工具保持活动状态。
结果:
当使用webpagetest工具检查服务器notalive上托管的test.html时,服务器notalive上的图像表明keep-alive没有激活,但是对于服务器上的图像,该工具表明它是keep-alive。
然后,我将 test.html 切换到 server alive 并且网页工具完全按照上面的测试指示,对于 notalive 服务器上的图像,该工具说 keep-alive 未激活,并且对于服务器上的图像活着该工具说保持活动已激活。
这让我相信,由于 html 文件相同,我的问题可能是由于服务器 notalive 的配置造成的。
我从两个服务器上运行 phpinfo() 并保留了似乎与活动有关的行(基于上面的 stackoverflow 帖子),并在下面复制了这些行。
对于 notalive 服务器:
PHP Version 5.3.29
Configuration: apache2handler: Max Requests Per Child: 500 - Keep Alive: on - Max Per Connection: 100
Configuration: apache2handler:Timeouts Connection: 300 - Keep-Alive: 1
Apache Environment: HTTP_CONNECTION close
HTTP Headers Information: HTTP Request Headers: connection close
Connection keep-alive
PHP Variables: _SERVER["HTTP_CONNECTION"] close
对于活动服务器:
PHP Version 5.2.12
apache: Max Requests Per Child: 1000 - Keep Alive: on - Max Per Connection: 500
Timeouts Connection: 300 - Keep-Alive: 5
Apache Environment: HTTP_CONNECTION keep-alive
HTTP Headers Information: HTTP Request Headers: Connection keep-alive
HTTP Headers Information: HTTP Response Headers:
Keep-Alive timeout=5, max=500
Connection Keep-Alive
PHP Variables: _SERVER["HTTP_CONNECTION"] keep-alive
如果有人能查看以上内容并可能提供一些有关如何激活 keep-alive 的指导,我将不胜感激。
感谢您抽出宝贵时间阅读本文。
【问题讨论】:
-
它没有回答您的问题,但您可以从命令行执行
curl -I example.com,而不是使用webpagetest.org。如果您无法访问命令行,那么大多数浏览器的开发人员工具都会在“网络”选项卡中显示标题。 -
谢谢布洛夫斯基。使用 Firebug:对于报告为不保持活动状态的图像,我得到 请求标头:连接:保持活动,响应标头连接:保持活动。对于服务器上工具指示不保持活动状态的图像,Request 标头为 Connection: keep-alive,Response 标头为 Connection: keep-alive, close。
-
在这种情况下,请参阅stackoverflow.com/a/22143279
-
布洛夫斯基。我编辑了 .htaccess 并删除了
Header set Connection keep-alive 。现在连接的响应标头已关闭。因此,上述内容似乎有助于混淆响应。这并不能解决我的问题,因为我仍然想知道如何激活 keep-alive。
标签: php apache .htaccess keep-alive