Serving precompressed content with Brotli on Apache

I have installed mod_brotli on my WHM server via easyapache 4 – html, css, js files etc are all being compressed.

I then came across this in the offocial docs –

I have since added this to my Post VirtualHost include file in WHM (post_virtualhost_global.conf) instead of htaccess as I want this to be server wide.

How can I verify if this is working and indeed serving precompressed files? I haven’t found anything to say either way, I can only confirm that brotli compression is in use. CPU loads are near enough the same with or without the include so I suspect it may not be saving the compressed files for next time.

This is the virtual host include:

<IfModule mod_headers.c>
  # Serve brotli compressed CSS and JS files if they exist
  # and the client accepts brotli.
  RewriteCond "%{HTTP:Accept-encoding}" "br"
  RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
  RewriteRule "^(.*)\.(js|css)"              "$1\.$2\.br" [QSA]

  # Serve correct content types, and prevent double compression.
  RewriteRule "\.css\.br$" "-" [T=text/css,E=no-brotli:1]
  RewriteRule "\.js\.br$"  "-" [T=text/javascript,E=no-brotli:1]

<FilesMatch "(\.js\.br|\.css\.br)$">
  # Serve correct encoding type.
  Header append Content-Encoding br

  # Force proxies to cache brotli &
  # non-brotli css/js files separately.
  Header append Vary Accept-Encoding

this is my /etc/apache2/conf.2/brotli.conf

  <IfModule brotli_module>
  # Compress only a few types
  AddOutputFilterByType BROTLI_COMPRESS text/plain text/css text/html application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript

  SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli

BrotliFilterNote Input instream
BrotliFilterNote Output outstream
BrotliFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' brotli
CustomLog "logs/brotli_log" brotli

and this is /etc/apache2/conf.modules.d/115_mod_brotli.conf

# Enable mod_brotli
LoadModule brotli_module modules/

So if anyone can help me figure out how to confirm if the files are precompressed or not that would be great.

Edit: I don’t think my files are being pre-compressed. Does anyone have any further info about this? I cannot find any further posts or docs on it at akk

Leave a Comment