我正在嗅探我的一个网站的响应头,显然没有使用 http 压缩来传递响应,因为我在响应头中没有看到 Content-Encoding: gzip。
但奇怪的是 phpinfo() 显示 HTTP_ACCEPT_ENCODING: gzip,deflate,sdch
我正在使用 rackspace 云站点(共享主机,无法访问 httpdconfig),我真的很想激活 http 压缩,但是那边的支持人员告诉我,如果 phpinfo() 说了,那就说明它已经打开了。
谢谢。!
答案1
HTTP_ACCEPT_ENCODING
表示浏览器接受这些编码。这并不意味着服务器就是sending
这些编码 - 这是客户端标头。
答案2
您应该做的是将此 php 代码添加到您想要使用压缩的任何 PHP 文件的最开头:
<?php
ob_start("ob_gzhandler");
?>
通常情况下,所有文件都会包含一个头文件,一个很好的例子就是数据库配置文件。只要在程序执行或之前添加这行代码,print()
那么echo()
你就成功了。
这将缓冲 PHP 页面构建的所有输出,然后在将其发送到浏览器之前对其进行 gzip 压缩。如果您只提供平面 html 文件,那么您可以编写一个简单的 PHP 访问页面来读取 .html 文件并打印它:
<?php
ob_start("ob_gzhandler");
print(file_get_contents("./html/somefile.html"));
?>