我想在我的Apache服务器启用GZIP压缩,这是使用连接器面向Tomcat实例。 我在httpd.conf中尝试了几个模块configuration设置的变体。 这是我最近的尝试:
<IfModule mod_deflate.c> SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html DeflateCompressionLevel 9 SetEnvIfNoCase Request_URI \.(?:gif|png|jpg|jpeg)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate CustomLog "/var/output/logs/deflate_log" deflate ErrorLog "/var/output/logs/deflate_error_log" </IfModule>
我正在使用Firebug检查响应头,并validation了请求头包含Accept-Encoding: gzip deflate但是每次都会从响应中丢失Content-Encoding头。
我尝试添加下面的行到httpd.conf ,但它给出了一个错误, mod_deflate是一个内置的模块,无法加载。 我通过apachectl -t证实了这一点,它显示了mod_deflate.c作为编译模块。
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
我有一个通过AJP连接器连接到Apache的Tomcat实例。 当我debugging我的servlet时,我发现我得到的testing脚本的响应Content-Type是application/javascript;charset=UTF-8 。 我最初使用AddOutputFilterByType指令,并认为额外的charset=UTF-8部分可能会搞乱Apache的MIMEtypes,但是它也不适用于SetOutputFilter DEFLATE 。
我的deflate自定义日志重复显示以下行:
GET /myservlet HTTP/1.1" -/- (-%)
我不明白为什么这不起作用。 我的Apache版本是2.0.63 。 有人遇到类似的问题吗? 无论如何,我可以进一步debugging,并检查在Apache内发生了什么? 也许启用一些debugging日志?
谢谢,Venkat。
您需要在Tomcat上启用压缩,而不是在httpd上启用Tomcat提供的内容。