请观看此简短视频,详细说明我的问题:http://youtu.be/uAza4m3fxpY?hd=1
我有一台运行Netbeans Web项目的Glassfish 3.1服务器。 我有一个非常简单的.jsp文件,内容类型设置为'text / html',并且正文中有大段虚拟文本。它看起来像这样:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Gzip Test</title>
</head>
<body>
<h1>Gzip compsression test</h1>
<p>****LOTS OF DUMMY TEXT***</p>
</body>
</html>
在Glassfish管理员中,我为HTTP侦听器强制启用了gzip压缩(如本指南中所述:http://www.vikasing.com/2010/01/enable-gzip-compression-on-glassfish-v3.html)
在Firefox中加载页面并查看响应标题时,我希望看到Content-Encoding: gzip
,但它不存在。
为什么内容没有被Gzip压缩?
答案 0 :(得分:1)
我发现这是Glassfish 3.1中的一个错误。它不会使用accept-encoding
字符对,
标题进行拆分。例如,如果你将firefox的accept-encoding
标题设置为:gzip, deflate
,它将不会对内容进行gzip,因为逗号会将其搞砸,但如果将其设置为gzip
则会被gzip压缩为服务器因为没有逗号可以阻塞。显然这已在Glassfish 3.1.1中修复,但我还没有测试过。有关详细信息,请参阅:http://www.java.net/forum/topic/glassfish/glassfish/gzip-compression-glassfish-3-doesnt-work?force=899。
答案 1 :(得分:0)
感谢您的视频。 我记得这是在Glassfish 3.0作为FishCAT的一部分发布之前出现的。
我认为您遇到的问题是因为您只设置了一个侦听器'http-listener-1',您还需要设置'http-listener-2'。 (也许你这样做了,但没有在视频中显示出来?)
答案 2 :(得分:0)
Glassfish 3.1.2甚至4.0 Beta中的相同错误 - 看起来gzip压缩变得完全错误。即使firefox的accept-encoding设置为仅gzip,它也不起作用。 您可能正在使用Google的CompressionFilter,但由于它使用了许多依赖项,因此使用它非常困难。
答案 3 :(得分:0)
我对glassfish 3.1.2.2和gzip也有同样的问题。
不压缩版本1.0中对HTTP请求的响应。您必须在 HTTP 1.1 中发送请求,才能从您的glassfish服务器获取gzipped响应。
此外,您必须在http请求中添加标题“Accept-Encoding:gzip”。