Apache缩小javascript压缩率1.00倍

时间:2016-10-02 01:31:44

标签: apache gzip

如果我在CLI中运行gzip,我可以获得良好的压缩率:

bundle.js:     75.3% -- replaced with bundle.js.gz

但是在Apache中,即使我设置了deflate,它也会压缩,但文件大小相同。下面是我的Apache配置:

LoadModule deflate_module libexec/apache2/mod_deflate.so
<IfModule deflate_module>
  DeflateCompressionLevel 9
  AddOutputFilterByType DEFLATE application/javascript text/plain text/css
  CustomLog /var/log/deflate_log DEFLATE
</IfModule>

以下是回复:

ETag    "8342b-53dc33d01d2c0-gzip"
Server  Apache/2.4.23 (Unix)
Content-Type    application/javascript
Last-Modified   Sat, 01 Oct 2016 01:00:35 GMT
Date    Sun, 02 Oct 2016 01:14:20 GMT
Connection  Keep-Alive
Vary    Accept-Encoding
Accept-Ranges   bytes
Keep-Alive  timeout=5, max=98
Content-Encoding    gzip
Transfer-Encoding   Identity

网络传输大小与之前相同,比率为1.00x。我把它缩小到只有js得到不压缩,而css得到的压缩比为6.22x。 js文件有问题吗?

1 个答案:

答案 0 :(得分:0)

我明白了!

我注意到没有&#34;内容长度&#34;响应中的标头。所以我回去查看Apache文档。它说:

  

DeflateBufferSize指令指定的大小(以字节为单位)   zlib应该一次压缩的碎片。如果压缩了   响应大小大于此指令指定的响应大小   httpd将切换到分块编码(HTTP标头Transfer-Encoding   设置为Chunked),副作用是不设置任何   Content-Length HTTP标头。这在httpd时特别重要   在反向缓存代理后面或在配置httpd时工作   mod_cache和mod_cache_disk因为没有任何HTTP响应   Content-Length标头可能未被缓存。

因为我的js文件是500k,远远超过默认的8k设置,所以我在conf文件中添加了以下内容,现在一切都很好:

<IfModule deflate_module>
  SetOutputFilter DEFLATE
  AddOutputFilterByType DEFLATE application/javascript text/plain text/css
  DeflateBufferSize 8096000
</IfModule>