Introducción al principio
La compresión HTTP puede mejorar en gran medida la velocidad de navegación de sitios web. Su principio es que después de que el cliente solicita los recursos correspondientes al servidor, los archivos de recursos se comprimen desde el servidor y luego se envían al cliente. El navegador es responsable de la descompresión y la navegación. . En comparación con el proceso de navegación normal de HTML, CSS, Javascript y Texto, puede ahorrar alrededor del 40% del tráfico. Más importante aún, también puede comprimir páginas web generadas dinámicamente, incluidas CGI, PHP, JSP, ASP, Servlet, SHTML, etc., y la eficiencia de la compresión también es muy alta.
Método de configuración
Tomcat 5.0 y versiones posteriores admiten la compresión del contenido de salida mediante el formato de compresión gzip.
Modifique %TOMCAT_HOME%/conf/server.xml y revise los nodos de la siguiente manera:
<Conector puerto="80" protocolo="HTTP/1.1" conexiónTimeout="20000" redirigirPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8" compresión="on" compresiónMinSize="50" noCompressionUserAgents="gozilla , traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
Como se puede ver en las propiedades del nodo anterior, para usar la función de compresión gzip, debe agregar las siguientes propiedades al nodo Conector
•compression="on" activa la función de compresión
•compressionMinSize="50" Habilita el tamaño del contenido de salida comprimido, el valor predeterminado es 2 KB
•noCompressionUserAgents="gozilla, traviata" Desactiva la compresión para los siguientes navegadores
•compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" Qué tipos de recursos deben comprimirse
Método de prueba
Después de habilitar la función de compresión TOMCAT, ¿cómo probamos si la compresión es efectiva?
En primer lugar, Tomcat determina si el navegador admite la función de compresión en función de la codificación de aceptación en el encabezado de solicitud del navegador. Si este valor contiene gzip, significa que el navegador admite la navegación de contenido comprimido con gzip. la función de compresión tiene efecto.
Solicitud directa a través del navegador
Todos acceden directamente al servidor con la configuración de compresión habilitada a través del navegador y luego usan la herramienta de captura de paquetes para ver los paquetes de datos capturados. Si hay mucho contenido que no puede comprender, significa que la función de compresión se ha habilitado.
Al simular solicitudes a través del programa, usamos httpclient para escribir un programa de prueba simple. El código es el siguiente:
@Test public void testGzip() { HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod("http://localhost/admin.jsp"); intente { getMethod.addRequestHeader("accept-encoding", "gzip, desinflar"); getMethod.addRequestHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); int resultado = httpClient.executeMethod(getMethod); { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); System.out.println(html); System.out.println(html.getBytes().length); HttpException e) { e.printStackTrace(); captura (IOException e) { e.printStackTrace(); } finalmente { getMethod.releaseConnection();
Ejecute este programa junit y vea qué contenido genera. Si el resultado son algunos caracteres confusos y la longitud del contenido impreso es mucho menor que la longitud real, significa que nuestra configuración ha tenido efecto. Descubra que la velocidad de navegación del sitio web mejorará significativamente.
Nota: Si descubre que el contenido no está comprimido, puede considerar ajustar el tamaño de compresiónMinSize. Si el recurso solicitado es menor que este valor, la compresión no se habilitará.