Glassfish 3 - gzip压缩不能用于.jsp



请观看这个简短的视频,详细展示了我的问题: http://youtu.be/uAza4m3fxpY?hd=1

我有一个Glassfish 3.1服务器运行Netbeans Web项目。我有一个非常简单的.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,但它不在那里。

为什么内容没有被压缩?

我发现这是Glassfish 3.1中的一个bug。它不使用,字符分割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

感谢您的视频。我记得这是在Glassfish 3.0作为FishCAT的一部分发布之前提出的。

我认为你遇到的问题是因为你只设置了一个监听器'http-listener-1',你也需要设置'http-listener-2'。(也许你这样做了,但没有在视频中显示?)

Glassfish 3.1.2甚至4.0 Beta中也有同样的bug——看起来gzip压缩已经完全有bug了。即使firefox的accept-encoding被设置为单独的gzip,它也不能工作。你可能会使用压缩过滤器从谷歌,但它是相当困难的使用,因为它使用了一些依赖关系。

我在glassfish 3.1.2.2和gzip中也遇到了同样的问题。

1.0版本的HTTP请求响应没有被压缩。你必须在HTTP 1.1中发送请求才能从你的glassfish服务器获得gzip的响应。

另外,你必须在你的http请求中添加"Accept-Encoding: gzip"头。

相关内容

  • 没有找到相关文章

最新更新