2013-12-02 4 views
3

Кто-нибудь знает, как сжимать ответный фрагмент на play framework 2.2.1? У меня есть gzipFilter, который отлично сжимает обычный контент, но не сжимает chunked ответы. Мой код очень прост, что-то вроде этого:Gzip chunked response в игровом каркасе

return ok(new StringChunks() { 
    public void onReady(Chunks.Out<String> out) { 
     out.write("Huuuge content to be gzipped"); 
     out.write("Huuuge content2 to be gzipped"); 
    } 
}); 

ответ

0

Насколько я понимаю, вы должны GZIP ответ перед комков его. Если воспроизведение куски, вы не можете попросить Apache после этого gzip или фильтр воспроизведения.

У меня что-то работает со следующим кодом. Это scala, но вы можете получить идею :) (Play 2.2 Scala)

import scala.concurrent.ExecutionContext.Implicits.global 
    val enumerator = Enumerator.outputStream { outputStream => 
    val finalOutputStream = { 
     if (canGzip) new GZIPOutputStream(outputStream) 
     else outputStream 
    } 
    CustomSerializer.serialize(call,finalOutputStream) 
    } 

    val headers = List(
    Some("Content-Type","application/json"), 
    if (canGzip) Some(("Content-Encoding","gzip")) else None 
).flatten 

    Ok.chunked(enumerator).withHeaders(headers: _*) 
Смежные вопросы