سؤال

أنا أستخدم Tomcat لضغط محتوى HTML الخاص بي مثل هذا:

<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" />

في رأس HTTP (كما لوحظ عبر YSLOW)، ومع ذلك، فإنني لا أرى

Content-Encoding: gzip

مما أدى إلى نقاط yslow سيئة.

كل ما أراه هو

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

أنا أقوم بتشغيل تكوين APASE MOD_JK Tomcat.

كيف يمكنني ضغط محتوى HTML مع Tomcat، وكذلك إضافة "ترميز المحتوى: GZIP" في الرأس؟

هل كانت مفيدة؟

المحلول

القي نظرة على http://sourceforge.net/projects/pjl-comp-filter/.

الحلول المخصصة الأخرى قد يكون لها تسرب الذاكرة.

أيضا، إذا كنت تستخدم mod_jk، فأنت بالتأكيد لا تستخدم موصل 8080 (الذي يدعم الضغط) لتلك الطلبات.

نصائح أخرى

سيقوم Tomcat بالضغط. ومع ذلك لأنك تستخدم mod_jk أعتقد أنك تحصل على طلباتك عبر Apache على المنفذ 80 بدلا من Tomcat على المنفذ 8080. وبعد كتجربة تحاول الحصول على صفحتك عبر المنفذ 8080 ثم التحقق yslow يجب أن ترى الرؤوس الصحيحة.

أعتقد أن ما يحدث هو أن Apache يضغط على المحتوى الذي يحصل عليه من Tomcat عبر mod_jk ثم اجتياز المحتوى المتبادل إلى المتصفح.

إذا كنت ترغب في استخدام mod_jk ثم ستحتاج إلى إعداد ضغطك على Apache بدلا من Tomcat.

ربما يشير ضغط Tomcat إلى ليس Gzip؟ إنها طعنة في الظلام، لكنها قد تتعلق بضغط الفضاء الأبيض أو التشذيب الخط.

أود أن أتصور Tomcat سيكون أكثر صراحة في هذا الصدد (هنا على أمل).

لدينا مرشح Gzip الذي ذكرنا Duffmo قيد التشغيل في تطبيقنا، ويبدو Web.xml شيئا مثل هذا:

<?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>

لتحسين أداء الجانب العميل العام لتطبيق الويب J2EE، يمكنك تجربة Webutilities Java Library.

ها هو الرابط الالكتروني :: http://code.google.com/p/webuturities/.

يوفر مكونات المرشح والعلامة والخدم لتطبيق ممارسات أداء جانب العميل المختلفة مما يؤدي إلى تصنيف أداء أعلى مقابل PASESPEED / YSLOW.

منذ الإصدار 0.0.4 يساعد في اتباع ممارسات الأداء التالية.

  1. تقليل طلبات HTTP - يمكن أن تخدم ملفات JS / CSS متعددة في طلب واحد
  2. التخزين المؤقت الجانبي العميل - يضيف التحكم في ذاكرة التخزين المؤقت المناسبة، تنتهي رأسه
  3. على الطيران JS / CSS التقليد - باستخدام Yuicompressor
  4. ضغط - يدعم ضغط 2way لترفيحات GZIP / DYPLATE / ضغط
  5. استجابة التخزين المؤقت في الخادم - لتجنب إعادة معالجة الموارد دون تغيير
  6. أضف ترميز الأحرف - للسماح للمتصفح مقدما

كما أنه قابل للتكوين / التخصيص للغاية ضد MIME أو URL أو وكلاء المستخدمين.

ألقيت نظرة على وثائق Tomcat هنا:http://tomcat.apache.org/tomcat-5.5-doc/config/http.html.

يذكر باستخدام compression="force" التي عملت بالنسبة لي. يقول أيضا أنه يمكنك تعيين minimum number. وبعد هذا عمل جيد بالنسبة لي

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

(ضغط أي شيء أكثر من 256 كيلو بايت)

القيمة الافتراضية ل compressableMimeType يعني أنني لم أكن بحاجة إلى هذه السمة. لاحظ أيضا أنه لا يسرد CompressionMinSize ينسب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top