Мой контроллер Grails 1.3.7 генерирует некоторый JSON, и я хотел бы отправить его клиенту в сжатом (заархивированном) виде, так как объем JSON может составлять 2+ МБ без сжатия. Плагин ресурсов, который я нашел, похоже, сжимает только статические ресурсы. Есть ли способ сжать вывод динамического контроллера?
Как сжать вывод контроллера Grails?
Ответы (2)
Я думаю, вам понадобится следующая конфигурация в Config.groovy
, если используется плагин Ui-Performance:
uiperformance.html.includeContentTypes = ['text/json','application/json']
Также ознакомьтесь с CompressingFilter API. который используется для сжатия HttpServletResponse. Если вам интересно, вы также можете заглянуть в исходный код как как манипулируют веб-дескриптором для использования компрессора.
Если вы обслуживаете свое приложение Grails из-за веб-сервера, такого как apache или nginx, вы можете довольно легко настроить сжатие во внешнем интерфейсе.
См. mod_deflate для apache и HttpGzipModule для nginx.
Если вы предпочитаете выполнять сжатие внутри своей банки, вы можете либо создать ServletFilter
, либо выполнить сжатие самостоятельно как указано в этом вопросе SO, или используйте что-то вроде плагина UI-Performance как упомянул dmahapatro.