GZipFilter en Liferay 7.1

Habilitando la compresión en las respuestas del portal

Publicado por Miguel Ángel Júlvez el 06 de julio de 2018

La nueva versión 7.1 de Liferay trae una sorpresita que acabo de descubrir:

El filtro GZipFilter, el que se encarga de devolver la respuesta comprimida del portal ¡está deshabilitado por defecto!

Se puede habilitar de nuevo añadiendo la siguiente línea del portal-ext.properties

com.liferay.portal.servlet.filters.gzip.GZipFilter=true

De todas formas, es verdad que este filtro me ha dado problemas de rendimiento en algunos proyectos y al final he optado por desactivarlo en alguno de ellos y delegar la compresión al apache2 que lo hace mucho mejor.

Así que, antes de volver a habilitar de nuevo este filtro, vamos a dejarlo desactivado tal y como viene por defecto y vamos a configurar nuestro frontal para que sea él el encargado de realizar la comprensión. En este caso vamos a ver cómo hacerlo en apache2 ya que es el que yo uso en mi web

<VirtualHost *:443>

...

SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

<filesMatch "\.(html|xml|json|js|css)$">
  SetOutputFilter DEFLATE
</filesMatch>

…

</VirtualHost>

Aseguraros eso sí de que están activados los modules necesarios

sudo a2enmod deflate filter

Y finalmente reiniciamos el apache2

sudo service apache2 restart


Para que veáis la importancia de habilitar la comprensión en las aplicaciones web, aquí tenéis la comparativa de la nota que le da Google page speed a mi web antes y después del cambio

Antes de habilitar la compresión

 

Después de habilitar la compresión

Menuda diferencia, ¿no?