簡體   English   中英

在Spring Boot,Angular Java應用程序中了解Gzip壓縮

[英]Understanding Gzip Compression in Spring Boot ,Angular Java Application

我正在使用Spring Boot(v 1.2)和AngularJS應用程序。 我正在嘗試在我們的應用程序中實現GZip壓縮以提高性能。

我想壓縮我的JSON響應。 我已經做了...

1.按如下所示在tomcat(嵌入式Spring Boot)中啟用壓縮。 參考:Stackoverflow ... 將GZIP壓縮與帶有RESTful和spring docs的Spring Boot / MVC / JavaConfig一起使用 ... https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded- servlet-containers.html#how-to-enable-http-response-compression

@Bean
public EmbeddedServletContainerCustomizer servletContainerCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer servletContainer) {
            ((TomcatEmbeddedServletContainerFactory) servletContainer).addConnectorCustomizers(
                    new TomcatConnectorCustomizer() {
                        @Override
                        public void customize(Connector connector) {
                            AbstractHttp11Protocol httpProtocol = (AbstractHttp11Protocol) connector.getProtocolHandler();
                            httpProtocol.setCompression("on");
                            httpProtocol.setCompressionMinSize(256);
                            String mimeTypes = httpProtocol.getCompressableMimeTypes();
                            String mimeTypesWithJson = mimeTypes + "," + MediaType.APPLICATION_JSON_VALUE;
                            httpProtocol.setCompressableMimeTypes(mimeTypesWithJson);
                        }
                    }
            );
        }
    };
}

現在,我的響應標頭中缺少content-encoding:gzip 因此,到目前為止,上述代碼沒有任何影響 我的問題是... 1.如何在春季設置“ content-encoding:gzip”? ->我在像httpservletresponse.addHeader("content-encoding","gzip")這樣的spring控制器中嘗試過

但是,這次, 響應體在瀏覽器中為空 (添加.. httpservletresponse.addHeader("content-encoding","gzip")

  1. 除上述以外, 還有什么未決 ->使用java.util.zip.GZIPOutputStream顯式壓縮響應,或者在啟用諸如httpProtocol.setCompression("on");類的壓縮時httpProtocol.setCompression("on"); 這是彈簧靴自動照顧的嗎? ->是否需要創建servlet過濾器?

底線是 :我不清楚“普通servlet實現方式”和“ spring boot”實現方式之間。

在Spring Boot上下文中,任何人都可以列出所需的步驟和不需要的步驟嗎?

我沒有在Spring Boot 1.2中進行測試,但是在Spring Boot 1.3中要啟用REST響應的壓縮,您需要在application.properties啟用壓縮:

server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,application/javascript,text/html,text/xml,text/plain

之后,將壓縮所有大於server.compression.min-response-size可緩存(不是POSTPUT等)請求。

聚苯乙烯

作為響應,在RESTful中將GZIP壓縮與Spring Boot / MVC / JavaConfig一起使用時,存在用於在Spring Boot 1.2中啟用壓縮的配置:

server.tomcat.compression: on
server.tomcat.compressableMimeTypes=application/json,application/xml,text/html,text/xml,text/plain

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM