2015-03-11 12 views
9

jestem z problemem do skonfigurowania GZip w moim JBoss Application Server serwer używany następującą konfigurację na serwerze:Konfiguracja GZip w JBoss Application Server

<subsystem xmlns="urn:jboss:domain:undertow:1.2"> 
     <buffer-cache name="default"/> 
     <server name="default-server"> 
      <http-listener name="default" socket-binding="http"/> 
      <host name="default-host" alias="localhost"> 
       <location name="/" handler="welcome-content"/> 
       <filter-ref name="gzipFilter" predicate="path-suffix['.css'] or path-suffix['.js'] or path-suffix['.xhtml']"/> 
       <filter-ref name="server-header"/> 
       <filter-ref name="x-powered-by-header"/> 
      </host> 
     </server> 
     <servlet-container name="default"> 
      <jsp-config/> 
      <websockets/> 
     </servlet-container> 
     <handlers> 
      <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> 
     </handlers> 
     <filters> 
      <response-header name="server-header" header-name="Server" header-value="Wildfly 8"/> 
      <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/> 
      <gzip name="gzipFilter"/> 
     </filters> 
    </subsystem> 

i stał się Zip wniosku poprawnie, jednak chciałbym ustawić minimalny rozmiar plików, które mają być spakowane i co jest trudne, czy ktoś wie, jak ustawić minimalny rozmiar serwera, czy powinien wysłać zip przed wysłaniem go do klienta?

Odpowiedz

9

Rozwijając na odpowiedź Aleksandra Zrobiłem kilka testy. O dziwo, predykat do kompresowania tylko plików większych niż 500 bajtów to not min-content-size[500].

Aby skonfigurować go za pomocą jboss-cli.sh uruchomić ten skrypt:

/subsystem=undertow/configuration=filter/gzip=gzipFilter:add() 
/subsystem=undertow/server=default-server/host=default-host/\ 
    filter-ref=gzipFilter:add(predicate="not min-content-size[500]") 

Zauważ, że filtr gzip zacznie działać po serwerze przeładować. Możesz to zrobić, używając komendy cli: :reload.

Aby sprawdzić, czy filtr jest włączony użyłem:

wget $MY_URL -S --header="accept-encoding: gzip" \ 
    -O /dev/null 2>&1| grep Content-Encoding 
+2

** Aktualizacja **: JBoss Application Server 10 pokazuje, że w ramach ostrzeżenia podczas korzystania 'źródłowe [VALUE]'. Powinieneś zmienić na 'predicate (value)'. Ale Wildfly 9 nie akceptuje 'predicate (value)', podnosi wyjątek ParseException. Predykat, a nie minimalny rozmiar treści [2048] używa staroświeckich nawiasów klamrowych do zdefiniowania predykatów, które zostaną usunięte w przyszłej wersji. predicate [wartość] powinna zostać zmieniona na predicate (value) ' –

+1

' min-content-size [500] 'działa z nagłówkiem" Content-Length ". Jeśli nie istnieje, ten predykat zwróci wartość false. Zatem znaczenie 'not min-content-size [500]' to: zastosuj gzip, jeśli odpowiedź ma długość treści> 500 LUB odpowiedź nie zawiera nagłówka Content-Length. Aby zmienić ostatnią część predykatu, możesz zmienić go na 'exists ['% {o, Content-Length}'], a nie na min-content-size [500]' lub na 'max-content-size [500] . – McGiogen