我的服务器上安装了 apache 2.2.11,我一直在尝试根据 yslow firefox 插件的建议来减少网站页面的加载时间。
我已经配置了 gzip 和 etag 以及它的一些其他建议,但我注意到在我的 css 文件的标题中,etag 被附加了文本 gzip。
有谁知道为什么以及如何解决这个问题?
我服务器的标头 日期 2009 年 6 月 7 日星期日 10:40:57 GMT 服务器 Apache/2.2.11 (Fedora) 最后修改时间 2009 年 5 月 31 日星期日 15:06:38 GMT Etag“3b4-46b36a802bb80”-gzip 接受范围字节 缓存控制 max-age=2592000 2009 年 7 月 7 日星期二 10:40:57 GMT 改变接受编码 内容编码 gzip 内容长度 530 连接关闭 内容类型文本/css
我的托管包上的相同代码使用旧版本的 apache,并且没有相同的问题。这可能只是一个apache错误吗?
我的托管包中的标题 日期 2009 年 6 月 7 日星期日 10:48:26 GMT 服务器 Apache/2.0.63 (FreeBSD) mod_python/3.3.1 Python/2.5.1 PHP/5.2.6 with Suhosin-Patch mod_fastcgi/2.4.6 mod_ssl/2.0.63 OpenSSL/0.9.7e-p1 DAV/2 mod_perl/ 2.0.4 Perl/v5.8.8 最后修改时间 2009 年 2 月 21 日星期六 13:54:52 GMT 电子标签“3b4-1d104300” 接受范围字节 缓存控制 max-age=2592000 2009 年 7 月 7 日星期二 10:48:26 GMT 改变接受编码 内容编码 gzip 内容长度 530 连接关闭 内容类型文本/css
这是一个理想的 .htaccess,它既可以压缩又可以设置合适的过期标头。
以下文章介绍了它的作用并讨论了压缩:
http://www.samaxes.com/2009/01/06/more-on-compressing-and-caching-your-site-with-htaccess/
希望有帮助。
Apache
mod_deflate
正在为每个实体创建唯一的 Etag,因为它们标识了 URL 的特定实体变体。每个协商的变体都需要有唯一的 ETag:s。因为mod_deflate
它就像将编码添加到已经计算的 ETag 一样简单。一种解决方法是从 Etag 中删除编码:
如果您将 Apache 2.5 与该
mod_deflate
模块一起使用,则可以使用该指令DeflateAlterETag
指定在压缩响应时应如何更改 ETag hader。来源:https ://httpd.apache.org/docs/trunk/mod/mod_deflate.html#deflatealteretag
这篇博文建议完全删除 Etags 并依赖
Cache-Control
标头。要做到这一点
httpd.conf
:请注意,如果实体 gzip:ed by
mod_deflate
仍然带有与普通实体相同的 ETag,这可能会导致 ETag 感知代理缓存中的不一致。更多信息在这里:
你能详细说明你是如何配置gzip的吗?例如,您是否使用 mod_deflate?您可以从您的 httpd.conf 中发布片段,尤其是 AddOutputFilterByType 字段吗?我为我的特定托管服务提供商遵循了这些指示,并且 text/css 可能不在您的托管服务提供商的列表中:
http://kb.mediatemple.net/questions/1567/Compressing+web+pages+with+mod_deflate