当我尝试gzip输出时“内容编码错误”

时间:2014-03-03 10:36:27

标签: grails gzip

我正在尝试gzip控制器操作的输出以节省一些带宽:

new ByteArrayOutputStream().withStream{ baos ->
  new GZIPOutputStream( baos ).withWriter{ it << m.text.bytes }
  //def gzip = baos.toByteArray().encodeBase64()
  def gzip = new String( baos.toByteArray() )
  response.setHeader 'Content-Type', 'application/x-javascript'
  response.setHeader 'Content-Encoding', 'x-gzip'
  response.outputStream.withStream{ it << gzip }
}

}

当我在浏览器中打开网址时,它会给我

  

未知错误:net :: ERR_CONTENT_DECODING_FAILED

在IE中

  

内容编码错误

在FF中

我错过了什么?

1 个答案:

答案 0 :(得分:1)

    def index() {
            response.setHeader 'Content-Type', 'application/x-javascript'
            response.setHeader 'Content-Encoding', 'x-gzip'
            new GZIPOutputStream(response.outputStream).withWriter{ it << "Content comes here" }
    }

还考虑在webapp前面使用网络服务器的功能(例如,apache的gzip模块可以更好地处理这种方式)。您还必须先检查客户端的功能(客户端请求中的Accept-Encoding标头)