2

我有两个文件:index.html 和 index.html.gz。

如果客户端支持 gzip,我想提供 index.html.gz。如果客户没有,我想提供 index.html。

如果访问者访问 www.site.com,这应该可以工作

真的不确定如何做到这一点:(

编辑:我正试图让它在 .htaccess 中工作

我可以通过执行以下操作轻松使用其他页面:

RewriteCond %{HTTP:Accept-encoding} gzip
RewriteRule ^contact\.html$ contact.gz

但我不能用索引来做,因为人们不输入 www.site.com/index.html。他们将 index.html 排除在外。

4

1 回答 1

0

如果有人在读这篇文章,我最终找到了答案。

有多种方法可以做到这一点,例如,如果文件的“.gz”版本存在(index.html.gz),一些网络服务器(如 H2O)甚至支持自动提供网站的预压缩版本。

然而,我在 Apache 上做的方式是使用 .htaccess 将文件的所有请求重定向到“.gz”实例。这可以使用 RewriteRule

然而,当浏览器试图渲染 GZipped 数据时,所有数据都会出现在浏览器中,并认为它是文本。当我发回文件的 gzip 压缩版本时,我必须使用 .htaccess 将内容编码标头正确设置为 gzip。在那之后,一切都很完美。

另一个建议是,当您对文件进行 gzip 压缩时,请使用批处理脚本使用每种压缩模式 1-9 对文件进行 gzip,您最终将得到 10 个文件。您会注意到,在压缩模式 ~5 之后保存的大小几乎不可见,通常小于 1 KB,但解压缩此文件所需的 CPU 周期不断增长。所以为每个文件找到最佳的压缩级别,不要默认去9。

于 2015-03-20T06:30:00.797 回答