我正在尝试在我们的网站上使用 bigpipe 概念。这意味着尝试以块的形式发送响应,而不是将其作为一个整体发送,以便用户感觉该页面很快。我通过在java中的响应对象上使用flushBuffer方法成功地做到了这一点。但是现在当我尝试使用 apache mod_deflate 模块压缩内容时,分块丢失了。
这是来自 apache 的用于压缩内容的配置
**
开始 mod_deflate 配置
DeflateBufferSize 100
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /var/log/httpd/deflate_log deflate
结束 mod_deflate 配置**
这是在 apache 中打开 deflate 时的响应标头
连接:保持活动
内容编码:gzip
内容长度:7916
内容类型:文本/html;charset=UTF-8
日期:2012 年 1 月 27 日星期五 20:11:11 GMT
Keep-Alive:timeout=300, max=3997
Server:Apache
Vary:Accept-Encoding
在apache中关闭放气时的响应标头
连接:保持活动
内容类型:文本/html;charset=UTF-8
日期:2012 年 1 月 27 日星期五 20:21:14 GMT
Keep-Alive:timeout=300, max=3997
Server:Apache/2.2.3 (CentOS)
Transfer-Encoding:chunked
正如您在上面的 2 个标头中看到的那样,只有在关闭压缩的情况下,分块才有效。我在网上搜索这方面的内容,人们建议减少DeflateBufferSize值。正如您在我的 apache 配置中看到的那样,我将值减小到 100 字节,但这仍然没有解决问题。DeflateBufferSize 设置为 100 字节意味着响应在 apache 中缓冲,直到接收到 100 字节,然后将其压缩。
我正在查看与旧 apache 1.3 捆绑在一起的 mod_gzip 模块,该模块有一个允许对分块内容进行 gzip 压缩的以下指令。
mod_gzip_dechunk 是
有谁知道与 apache 2.x 捆绑在一起的 mod_deflate 中的此类指令?
或者有谁知道如何压缩分块的内容?