【问题标题】:gzipping json response from grails controller来自grails控制器的gzipping json响应
【发布时间】:2014-05-05 07:34:18
【问题描述】:

我有一些非常巨大的 json 响应被发送到客户端浏览器,我正在尝试弄清楚如何压缩它们。我已尝试使用 ui-performance 插件,如对此问题的回答中所述: How to compress output from a grails controller?

但它没有用。我的 json 文件大小仍然相同(~40MB) 我也尝试过使用 yui-minify 资源插件,但无济于事。我还能怎么做? 另外,将这么大的json文件发送到浏览器是否可取? (前端的某个下拉选择让浏览器在每次用户选择一个选项时请求这个大小的json响应)

谢谢!

【问题讨论】:

    标签: json grails controller compression gzip


    【解决方案1】:

    Grails 3.0 及更高版本基于启用此功能的 Spring Boot。您应该查看您个人版本的文档,但在 Grails 3.2.2 中,您可以将其添加到 application.yml 的第二部分:

    server:
        compression:
            enabled: true
            mime-types: application/json,application/xml,text/html,text/xml,text/plain
    

    【讨论】:

    • 我的 application.yml 的第二部分应该是什么?你的意思是在“春天:”下?
    • Grails 使用 --- 将配置拆分为多个部分(根据 YAML 规范),但是如果不命名这些部分,那么在哪里放置设置会有点混乱。第二部分是指第一个 --- 和第二个 --- 分隔符之前的任何地方。
    【解决方案2】:

    你可以直接在tomcat里做http://viralpatel.net/blogs/enable-gzip-compression-in-tomcat/

    直接在server.xmltomcat plugin 中进行操作

    更新

    您也可以尝试手动操作,例如:

    def zipStream = new GZIPOutputStream( response.outputStream )  
    zipStream.write( yourJsonString.getBytes() )  
    zipStream.close()  
    response.outputStream
    

    【讨论】:

    • 嘿,我也试过了。我将 application/json、text/json 添加到应该 gzip 压缩的 mime 类型中。但它没有用。有什么原因吗?
    • 你的测试怎么样?压缩只能在客户端可见
    • 在我的 Chrome 开发工具上,在网络下。如您提供的链接所示。我的 HTTP 响应中没有内容编码标头。
    • 响应内容大小如何?
    • 还是挺大的。大约 40 MB。
    【解决方案3】:

    【讨论】:

    • 嘿,这也不行。我添加了它(通过在 BuildConfig.groovy 中包含代码进行安装,并尝试了使用和不使用您在 Config.groovy 中提供的链接中提到的代码),但我的应用程序不会加载 json 文件本身。一次给我一个 500 内部错误,另一次给我一个 ERR_CONNECTION_REFUSED。
    • >> 5 年前由 mischa 上次更新,看起来不太好:/
    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多