Frage

Ich verwende Tomcat, um meinen HTML-Inhalt wie folgt zu komprimieren:

<Connector port="8080" maxHttpHeaderSize="8192"
maxProcessors="150" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="150" connectionTimeout="20000" disableUploadTimeout="true"
compression="on" compressionMinSize="128" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html"
URIEncoding="UTF-8" />

Im HTTP-Header (wie über YSlow beobachtet) sehe ich jedoch nichts

Content-Encoding: gzip

Dies führt zu einem schlechten YSlow-Score.

Ich sehe nur

HeadersPost
Response Headers
Server: Apache-Coyote/1.1
Content-Type:   text/html;charset=ISO-8859-1
Content-Language:   en-US
Content-Length: 5251
Date:   Sat, 14 Feb 2009 23:33:51 GMT

Ich verwende eine Apache mod_jk Tomcat-Konfiguration.

Wie komprimiere ich HTML-Inhalte mit Tomcat und füge außerdem „Content-Encoding“ hinzu:gzip“ im Header?

War es hilfreich?

Lösung

Hier finden Sie aktuelle http://sourceforge.net/projects/pjl-comp-filter/ .

Andere benutzerdefinierte Lösungen können Speicherverluste haben.

Auch wenn Sie mit mod_jk dann werden Sie sicherlich nicht den 8080-Anschluss mit (der Kompression unterstützt) für diese Anforderungen.

Andere Tipps

Tomcat wird die Kompression tun. Aber weil Sie mod_jk verwenden Ich denke, Sie bekommen Sie Anfragen über Apache auf Port 80 statt tomcat auf Port 8080. Als Experiment versuchen, Ihre Seite über den Port 8080 bekommen und dann yslow Überprüfung sollten Sie die richtigen Header sehen.

Ich denke, was passiert ist, dass Apache den Inhalt ist unzipping, dass es aus Kater über mod_jk bekommen und dann den entleerten Inhalt Weitergabe an den Browser.

Wenn Sie mod_jk verwenden, dann müssen Sie Ihre Kompression auf Apache einzurichten anstatt Tomcat.

Vielleicht ist die Kompression Tomcat bezieht sich nicht gzip? Es ist ein Stich in der Dunkelheit, aber es könnte zu white-space Kompression oder Linie Trimmen beziehen.

Ich könnte mir vorstellen, Tomcat wäre ein bisschen mehr explizit in dieser Hinsicht sein (hier hofft).

Wir haben die gzip-Filter haben erwähnt durch duffmo in unserer Anwendung ausgeführt wird, die web.xml etwa wie folgt aussieht:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd">

    <display-name>App-Web</display-name>

    <!-- FILTERS -->

    <!-- Gzip filter -->
    <filter>
        <filter-name>GZIPFilter</filter-name>
        <filter-class>weblogicx.servlet.gzip.filter.GZIPFilter</filter-class>
    </filter>

    [snip]    
</web-app>

Um die allgemeine clientseitige Leistung der J2EE-Webanwendung zu verbessern, können Sie die Java-Bibliothek WebUtilities ausprobieren.

Hier ist der Link :: http://code.google.com/p/webutilities/.

Es bietet Filter-, Tag- und Servlet-Komponenten zur Anwendung verschiedener clientseitiger Leistungspraktiken, was zu einer höheren Leistungsbewertung im Vergleich zu PageSpeed/YSlow führt.

Seit Version 0.0.4 hilft es bei der Befolgung von Leistungspraktiken.

  1. HTTP-Anfragen minimieren – kann mehrere JS/CSS-Dateien in einer Anfrage bereitstellen
  2. Clientseitiges Caching – fügt die richtige Cache-Kontrolle und den Expires-Header hinzu
  3. On-the-fly JS/CSS-Minimierung – mit YUICompressor
  4. Komprimierung – unterstützt die bidirektionale Komprimierung für gzip/deflate/compress-Kodierungen
  5. Antwort-Caching auf dem Server – um die erneute Verarbeitung unveränderter Ressourcen zu vermeiden
  6. Zeichenkodierung hinzufügen – um den Browser im Voraus darüber zu informieren

Es ist außerdem hochgradig konfigurierbar/anpassbar für MIME, URL oder User-Agents.

Ich hatte einen Blick auf die Tomcat-Dokumentation hier: http://tomcat.apache.org/tomcat-5.5-doc/ config / http.html

Es erwähnt compression="force" verwendet, die für mich gearbeitet. Er sagt auch, Sie minimum number einstellen. Dies funktionierte gut für mich

<Connector port="8080" compression="256000" />

(komprimiert etwas über 256Kb)

Der Standardwert für compressableMimeType bedeutete, dass ich nicht das Attribut brauchte. Beachten Sie auch, dass es nicht CompressionMinSize Attribut auflistet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top