Как сжать вывод контроллера Grails?

Мой контроллер Grails 1.3.7 генерирует некоторый JSON, и я хотел бы отправить его клиенту в сжатом (заархивированном) виде, так как объем JSON может составлять 2+ МБ без сжатия. Плагин ресурсов, который я нашел, похоже, сжимает только статические ресурсы. Есть ли способ сжать вывод динамического контроллера?


person Gene Golovchinsky    schedule 26.06.2013    source источник
comment
Может ли плагин Ui-Performance помочь? Я не уверен насчет использования, но одной из особенностей плагина является сжатие динамического текстового содержимого, такого как JSON.   -  person dmahapatro    schedule 26.06.2013


Ответы (2)


Я думаю, вам понадобится следующая конфигурация в Config.groovy, если используется плагин Ui-Performance:

uiperformance.html.includeContentTypes = ['text/json','application/json']

Также ознакомьтесь с CompressingFilter API. который используется для сжатия HttpServletResponse. Если вам интересно, вы также можете заглянуть в исходный код как как манипулируют веб-дескриптором для использования компрессора.

person dmahapatro    schedule 26.06.2013

Если вы обслуживаете свое приложение Grails из-за веб-сервера, такого как apache или nginx, вы можете довольно легко настроить сжатие во внешнем интерфейсе.

См. mod_deflate для apache и HttpGzipModule для nginx.

Если вы предпочитаете выполнять сжатие внутри своей банки, вы можете либо создать ServletFilter, либо выполнить сжатие самостоятельно как указано в этом вопросе SO, или используйте что-то вроде плагина UI-Performance как упомянул dmahapatro.

person codelark    schedule 26.06.2013