我正在尝试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 }
}
}
当我在浏览器中打开网址时,它会给我
在IE中未知错误:net :: ERR_CONTENT_DECODING_FAILED
或
内容编码错误
在FF中
我错过了什么?
答案 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
标头)