2014-03-03 61 views
1

我試圖給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 } 
} 

}

當我打開的網址一個瀏覽器,它給了我

Unknown Error: net::ERR_CONTENT_DECODING_FAILED

在IE

Content Encoding Error

in FF

我在想什麼?

+0

您可以檢查您是否不使用utf-8 BOM保存文件嗎? (http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom)你需要一個好的編輯器來注意不同之處。 –

+0

另外,如果PHP error_reporting是打開,這可以給問題。 –

+0

不,沒有BOM問題,它與php無關 – injecteer

回答

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的前端Web服務器的功能(例如Apache的gzip的模塊可以處理這樣的事情的方式更好)。您還需要先檢查客戶端的功能(客戶端請求中的Accept-Encoding標頭)