1

我正在开发一个来自 html5 样板库的项目。我调用 PHP 脚本来返回用户的头像图像,使用 header() 来设置适当的内容类型('image/jpeg'、'image/png'、'image/gif' 是我允许的唯一类型)。

当我请求图像时,服务器以 gzip 压缩的无缓存响应进行响应:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Cache-Control:public
Connection:Keep-Alive
Content-Encoding:gzip
Content-Type:image/jpeg
Date:Mon, 11 Mar 2013 09:18:23 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=92
Pragma:no-cache
Server:Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
Transfer-Encoding:chunked
Vary:Accept-Encoding,User-Agent
X-UA-Compatible:IE=Edge,chrome=1

这显然不理想......我能够显式设置缓存头,但这并不能解决根本问题。如果我设置 Content-Encoding: identity,它无论如何都会发送 gzip 压缩的数据并且浏览器会感到困惑。

.htaccess 文件

...我刚刚测试了另一件事。我在 PHP 脚本中使用了 ini_set('zlib.output_compression', 'Off') ,还重命名了 .htaccess 文件,我仍然得到相同的结果。我现在真的很困惑。服务器正在运行带有 easyapache 的 CentOS 5.9(对不起!)

如何使用 PHP 脚本提供图像并对其应用适当的缓存和压缩规则?

编辑:在我发布这个的那一刻,我当然解决了其中的一部分...... gzip 问题是在一个配置文件中设置了一些幼稚的规则。删除它们允许 .htaccess 文件完成它的工作,部分无论如何。它仍在禁用缓存。

4

0 回答 0