Introduction au principe
La compression HTTP peut considérablement améliorer la vitesse de navigation sur les sites Web. Son principe est qu'une fois que le client a demandé les ressources correspondantes au serveur, les fichiers de ressources sont compressés depuis le serveur puis envoyés au client. Le navigateur est responsable de la décompression et de la navigation. . Par rapport au processus de navigation ordinaire HTML, CSS, Javascript et Texte, il peut économiser environ 40 % du trafic. Plus important encore, il peut également compresser des pages Web générées dynamiquement, notamment CGI, PHP, JSP, ASP, Servlet, SHTML, etc., et l'efficacité de la compression est également très élevée.
Méthode de configuration
Tomcat 5.0 et les versions ultérieures prennent en charge la compression du contenu de sortie, à l'aide du format de compression gzip.
Modifiez %TOMCAT_HOME%/conf/server.xml et révisez les nœuds comme suit :
<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" />
Comme le montrent les propriétés du nœud ci-dessus, pour utiliser la fonction de compression gzip, vous devez ajouter les propriétés suivantes au nœud Connecteur.
•compression="on" active la fonction de compression
•compressionMinSize="50" Activer la taille du contenu de sortie de compression, la valeur par défaut est 2 Ko
•noCompressionUserAgents="gozilla, traviata" Désactivez la compression pour les navigateurs suivants
•compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" Quels types de ressources doivent être compressés
Méthode d'essai
Après avoir activé la fonction de compression TOMCAT, comment tester si la compression est efficace ?
Tout d'abord, Tomcat détermine si le navigateur prend en charge la fonction de compression en fonction de l'encodage accepté dans l'en-tête de la requête du navigateur. Si cette valeur contient gzip, cela signifie que le navigateur prend en charge la navigation dans le contenu compressé gzip. la fonction de compression est Prendre effet.
Demande directe via le navigateur
Tout le monde accède directement au serveur avec la configuration de compression activée via le navigateur, puis utilise l'outil de capture de paquets pour afficher les paquets de données capturés. S'il y a beaucoup de contenu que vous ne pouvez pas comprendre, cela signifie que la fonction de compression a été activée.
En simulant des requêtes via le programme, nous utilisons httpclient pour écrire un programme de test simple. Le code est le suivant :
@Test public void testGzip() { HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod("http://localhost/admin.jsp"); try { getMethod.addRequestHeader("accept-encoding", "gzip, dégonfler"); getMethod.addRequestHeader("user-agent","Mozilla/4.0 (compatible ; MSIE 6.0 ; Windows NT 5.0 ; Alexa Toolbar ; Maxthon 2.0)"); { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); System.out.println(html); System.out.println(html.getBytes().length); HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } enfin { getMethod.releaseConnection( } }
Exécutez ce programme Junit et voyez quel contenu il génère. Si la sortie contient des caractères tronqués et que la longueur du contenu imprimé est beaucoup plus petite que la longueur réelle, cela signifie que notre configuration a pris effet via d'autres outils de vérification. constater que la vitesse de navigation du site Web sera considérablement améliorée.
Remarque : Si vous constatez que le contenu n'est pas compressé, vous pouvez envisager d'ajuster la taille de compressionMinSize. Si la ressource demandée est inférieure à cette valeur, la compression ne sera pas activée.