Einführung in das Prinzip
Die HTTP-Komprimierung kann die Geschwindigkeit beim Durchsuchen von Websites erheblich verbessern. Nachdem der Client die entsprechenden Ressourcen vom Server angefordert hat, werden die Ressourcendateien vom Server komprimiert und dann an den Client ausgegeben . Im Vergleich zum normalen Browserprozess von HTML, CSS, Javascript und Text können etwa 40 % des Datenverkehrs eingespart werden. Noch wichtiger ist, dass es auch dynamisch generierte Webseiten wie CGI, PHP, JSP, ASP, Servlet, SHTML usw. komprimieren kann und die Komprimierungseffizienz ebenfalls sehr hoch ist.
Konfigurationsmethode
Tomcat 5.0 und spätere Versionen unterstützen die Komprimierung von Ausgabeinhalten mithilfe des gzip-Komprimierungsformats.
Ändern Sie %TOMCAT_HOME%/conf/server.xml und überarbeiten Sie die Knoten wie folgt:
<Connector Port="80" Protokoll="HTTP/1.1" ConnectionTimeout="20000" RedirectPort="8443" Executor="TomcatThreadPool" URIEncoding="utf-8" Kompression="on" KompressionMinSize="50" noCompressionUserAgents="gozilla , traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
Wie aus den Eigenschaften des obigen Knotens hervorgeht, müssen Sie zur Verwendung der gzip-Komprimierungsfunktion die folgenden Eigenschaften zum Connector-Knoten hinzufügen
•compression="on" schaltet die Komprimierungsfunktion ein
•compressionMinSize="50" Aktiviert die Größe des Komprimierungsausgabeinhalts, der Standardwert ist 2 KB
•noCompressionUserAgents="gozilla, traviata" Komprimierung für die folgenden Browser deaktivieren
•compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" Welche Ressourcentypen müssen komprimiert werden?
Testmethode
Wie testen wir nach der Aktivierung der TOMCAT-Komprimierungsfunktion, ob die Komprimierung wirksam ist?
Zunächst bestimmt Tomcat anhand der Accept-Codierung im Browser-Anforderungsheader, ob der Browser das Durchsuchen von gzip-komprimierten Inhalten unterstützt Die Komprimierungsfunktion ist wirksam.
Direkte Anfrage per Browser
Jeder greift mit aktivierter Komprimierungskonfiguration über den Browser direkt auf den Server zu und verwendet dann das Paketerfassungstool, um die erfassten Datenpakete anzuzeigen. Wenn Sie viele Inhalte nicht verstehen, bedeutet dies, dass die Komprimierungsfunktion aktiviert wurde.
Durch die Simulation von Anforderungen über das Programm verwenden wir httpclient, um ein einfaches Testprogramm zu schreiben. Der Code lautet wie folgt:
@Test public void testGzip() { HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod("http://localhost/admin.jsp"); try { getMethod.addRequestHeader("accept-encoding", "gzip, deflate"); getMethod.addRequestHeader("user-agent","Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); int result = httpClient.executeMethod(getMethod); if (result == 200) { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); System.out.println(html.getBytes().length) ; } } Catch (HttpException e) { e.printStackTrace();
Führen Sie dieses Junit-Programm aus und sehen Sie, welchen Inhalt es ausgibt. Wenn die Ausgabe einige verstümmelte Zeichen enthält und die Länge des gedruckten Inhalts viel kleiner ist als die tatsächliche Länge, bedeutet dies, dass unsere Konfiguration durch einige andere Überprüfungstools wirksam wurde Stellen Sie fest, dass die Browsing-Geschwindigkeit der Website deutlich verbessert wird.
Hinweis: Wenn Sie feststellen, dass der Inhalt nicht komprimiert ist, können Sie die Größe „compressionMinSize“ anpassen. Wenn die angeforderte Ressource kleiner als dieser Wert ist, wird die Komprimierung nicht aktiviert.