如何压缩来自 grails 控制器的输出?

Posted

技术标签:

【中文标题】如何压缩来自 grails 控制器的输出?【英文标题】:How to compress output from a grails controller? 【发布时间】:2013-06-22 23:49:04 【问题描述】:

我的 Grails 1.3.7 控制器正在生成一些 JSON,我想以压缩(压缩)的形式将其发送到客户端,因为未压缩的 JSON 量可以是 2+MB。我发现的资源插件似乎只压缩静态资源。有没有办法压缩动态控制器的输出?

【问题讨论】:

可以Ui-Performance插件帮忙吗?我不确定用法,但该插件的功能之一是 gzip 动态文本内容,如 JSON。 【参考方案1】:

如果使用Ui-Performance plugin,我猜你需要在Config.groovy 中进行以下配置:

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

还可以查看CompressingFilter API,它用于压缩 HttpServletResponse。 如果好奇,您还可以查看source,了解如何操纵 Web 描述符以使用压缩器。

【讨论】:

【参考方案2】:

如果您从 apache 或 nginx 之类的网络服务器后面为您的 grails 应用程序提供服务,您可以相当轻松地在前端配置压缩。

请参阅mod_deflate 用于 apache 和 HttpGzipModule 用于 nginx。

如果您希望在 jar 中进行压缩工作,您可以创建一个 ServletFilter 并自己进行压缩 as mentioned in this SO question 或使用类似 UI-Performance 插件 as mentioned by dmahapatro 的东西。

【讨论】:

以上是关于如何压缩来自 grails 控制器的输出?的主要内容,如果未能解决你的问题,请参考以下文章

GRAILS --- 如何在 g:link 中传递字符串文字到控制器方法

在 grails 中,我如何获得对所有当前会话的引用?

Grails 中视图的 JSON 输出

Mongodb身份验证不适用于grails,而是来自控制台

在 grails 中处理来自服务的错误

Grails 在自定义视图中关联来自两个不同域的值