2015-03-11 10 views
9

sto con un problema di configurare il GZip in mio assistente wildfly usato la seguente configurazione sul server:configurazione di Gzip a wildfly

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

e divenne il file zip della richiesta in modo corretto, ma vorrei per impostare la dimensione minima per i file da zippare e cosa sono difficile, qualcuno sa come impostare la dimensione minima per il server fare il zip prima di inviarli al cliente?

risposta

9

Ampliando la risposta di Alessandro ho fatto qualche test. Stranamente il predicato per comprimere solo i file più grandi di 500 byte è not min-content-size[500].

configurarlo usando jboss-cli.sh eseguire questo script:

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

Nota che il filtro gzip inizierà a lavorare dopo ricarica del server. Puoi farlo usando il comando cli :reload.

per verificare se il filtro è abilitato ho usato:

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

** Aggiornamento **: wildfly 10 mostra la sotto avviso quando si utilizza 'predicato [valore]'. Dovresti cambiare in 'predicate (value)'. Ma Wildfly 9 non accetta 'predicate (value)', solleva una ParseException. 'Predicato non min-content-size [2048] usa le parentesi quadre dello stile vecchio per definire i predicati, che saranno rimossi in una versione futura. il predicato [valore] dovrebbe essere modificato in predicato (valore) ' –

+1

' min-content-size [500] 'funziona con l'intestazione" Content-Length ". Se non esiste, questo predicato restituisce false. Quindi il significato di 'not min-content-size [500]' è: applica gzip IF la risposta ha Content-Length> 500 O la risposta non ha intestazione Content-Length. Per cambiare l'ultima parte del predicato puoi cambiarla in 'exists ['% {o, Content-Length}'] e non in min-content-size [500]' o in 'max-content-size [500]' . – McGiogen