Introdução ao princípio
A compactação HTTP pode melhorar muito a velocidade de navegação em sites. Seu princípio é que, após o cliente solicitar os recursos correspondentes do servidor, os arquivos de recursos são compactados do servidor e depois enviados para o cliente, o navegador é responsável pela descompactação e navegação. . Comparado com o processo normal de navegação de HTML, CSS, Javascript e Texto, pode economizar cerca de 40% do tráfego. Mais importante ainda, ele também pode compactar páginas da web geradas dinamicamente, incluindo CGI, PHP, JSP, ASP, Servlet, SHTML, etc., e a eficiência de compactação também é muito alta.
Método de configuração
O Tomcat 5.0 e versões posteriores suportam compactação do conteúdo de saída, usando o formato de compactação gzip.
Modifique %TOMCAT_HOME%/conf/server.xml e revise os nós da seguinte forma:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8" compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla , traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
Como pode ser visto nas propriedades do nó acima, para usar a função de compactação gzip, você precisa adicionar as seguintes propriedades ao nó Conector
•compression="on" ativa a função de compactação
•compressionMinSize="50" Ativa o tamanho do conteúdo de saída de compactação, o padrão é 2KB
•noCompressionUserAgents="gozilla, traviata" Desativa a compactação para os seguintes navegadores
•compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" Quais tipos de recursos precisam ser compactados
Método de teste
Depois de ativar a função de compactação TOMCAT, como testamos se a compactação é eficaz?
Em primeiro lugar, o Tomcat determina se o navegador suporta a função de compactação com base na codificação de aceitação no cabeçalho de solicitação do navegador. Se este valor contiver gzip, significa que o navegador suporta a navegação de conteúdo compactado gzip. a função de compactação é entrar em vigor.
Solicitação direta via navegador
Todos acessam diretamente o servidor com configuração de compactação habilitada através do navegador e, em seguida, usam a ferramenta de captura de pacotes para visualizar os pacotes de dados capturados. Se houver muito conteúdo que você não consegue entender, significa que a função de compactação foi habilitada.
Ao simular solicitações por meio do programa, usamos httpclient para escrever um programa de teste simples. O código é o seguinte:
@Test public void testGzip() { HttpClient httpClient = new HttpClient(); deflate"); getMethod.addRequestHeader("user-agent","Mozilla/4.0 (compatível; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); int result = httpClient.executeMethod(getMethod); if (resultado == 200) { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); ; } } catch (HttpException e) { e.printStackTrace();
Execute este programa junit e veja qual conteúdo ele gera. Se a saída for alguns caracteres distorcidos e o comprimento do conteúdo impresso for muito menor que o comprimento real, significa que nossa configuração entrou em vigor por meio de algumas outras ferramentas de verificação. descobrir que a velocidade de navegação do site será significativamente melhorada.
Observação: se você descobrir que o conteúdo não está compactado, considere ajustar o tamanho de compressionMinSize. Se o recurso solicitado for menor que esse valor, a compactação não será habilitada.