В чате Joomla коллеги поделились полезными правилами для .htaccess, которые позволяют включить серверное сжатие brotli для трафика, а так же настроить кэширование. 
Правила следует вставить в самый конец .htaccess, после правил Joomla. В стандартном .htaccess Joomla вставлены правила, которые проверяют есть ли созданные вручную сжатые gzip файлы для js и css файлов. 
- Секция GZIP & BROTLI с использованием mod_rewrite проверяет, существует ли уже сжатый .gz файл (например, style.css.gz) и поддерживает ли клиент сжатие gzip.
- Если условия выполнены, сервер отдает готовый .gzфайл.
- Важно: Для этих .gzфайлов устанавливаются переменныеE=no-gzip:1иE=no-brotli:1. Это указывает другим модулям (включая mod_deflate и mod_brotli) не сжимать этот контент снова, предотвращая двойное сжатие и потенциальные ошибки (ERR_CONTENT_DECODING_FAILED).
Как это работает вместе со сжатием Brotli?
- Сначала Apache обрабатывает правила mod_rewrite из секции GZIP & BROTLI. Если запрошенный файл (.css или .js) имеет соответствующий .gz аналог, и клиент поддерживает gzip, Apache отдает этот готовый .gz файл и устанавливает флаги no-gzip и no-brotli.
- Если готовый .gz файл не найден или клиент не поддерживает gzip, Apache переходит к следующему этапу.
- Затем Apache проверяет, доступны ли mod_brotli или mod_deflate. В зависимости от доступности модуля и заголовков Accept-Encoding клиента (br, gzip), один из них выполнит сжатие файла на лету перед отправкой.
Включить сжатие Brotli на сервере для Joomla
<ifModule mod_brotli.c>
AddType image/svg+xml .svg
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css application/xml text/javascript application/x-javascript application/javascript application/json application/font-woff2 application/font-woff application/x-font-ttf application/vnd.ms-fontobject image/x-icon image/svg+xml
</ifModule>
<ifModule mod_deflate.c>
AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/xml text/javascript application/x-javascript application/javascript application/json application/font-woff2  application/font-woff application/x-font-ttf application/vnd.ms-fontobject image/x-icon image/svg+xml
</ifModule>Настройки кэширования для .htaccess Joomla
AddType application/vnd.ms-fontobject    .eot
AddType application/x-font-opentype      .otf
AddType image/svg+xml                    .svg
AddType application/x-font-ttf           .ttf
AddType application/font-woff            .woff
AddType application/font-woff2           .woff2
<IfModule mod_headers.c>
  <FilesMatch ".(eot|otf|svg|ttf|woff2?)$">
    Header set Access-Control-Allow-Origin "*"
  </FilesMatch>
</IfModule>
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript
  ExpiresActive on
  ExpiresDefault                          "access plus 1 month"
  ExpiresByType text/cache-manifest       "access plus 0 seconds"
  <FilesMatch \.(html|xhtml|xml|shtml|phtml|php|txt)$>
    ExpiresDefault "access plus 0 seconds"
  </FilesMatch>
  ExpiresByType text/html                 "access plus 0 seconds"
  ExpiresByType text/xml                  "access plus 0 seconds"
  ExpiresByType application/xml           "access plus 0 seconds"
  ExpiresByType application/json          "access plus 0 seconds"
  ExpiresByType application/rss+xml       "access plus 1 hour"
  ExpiresByType application/atom+xml      "access plus 1 hour"
  <FilesMatch \.(ico)$>
    ExpiresDefault "access plus 1 week"
  </FilesMatch>
  ExpiresByType image/x-icon              "access plus 1 week"
  <FilesMatch \.(gif|png|jpg|jpeg|webp|ogg|mp4|mkv|flv|swf|wmv|asf|asx|wma|wax|wmx|wm)$>
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
  ExpiresByType image/gif                 "access plus 365 days"
  ExpiresByType image/png                 "access plus 365 days"
  ExpiresByType image/jpeg                "access plus 365 days"
  ExpiresByType video/ogg                 "access plus 365 days"
  ExpiresByType audio/ogg                 "access plus 365 days"
  ExpiresByType video/mp4                 "access plus 2 month"
  ExpiresByType video/webm                "access plus 2 month"
  ExpiresByType text/x-component          "access plus 2 month"
  <FilesMatch \.(eot|ttf|otf|svg|woff|woff2)$>
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
  ExpiresByType application/x-font-ttf    "access plus 6 month"
  ExpiresByType font/opentype             "access plus 6 month"
  ExpiresByType application/x-font-woff   "access plus 6 month"
  ExpiresByType application/x-font-woff2  "access plus 6 month"
  ExpiresByType image/svg+xml             "access plus 6 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 2 month"
  <FilesMatch \.(css|js)$>
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
  ExpiresByType text/css                  "access plus 365 days"
  ExpiresByType application/javascript    "access plus 365 days"
  <FilesMatch \.(swf|pdf|doc|rtf|xls|ppt)$>
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
  ExpiresByType application/x-shockwave-flash "access plus 1 year"
  ExpiresByType application/pdf               "access plus 1 year"
  ExpiresByType application/msword            "access plus 1 year"
  ExpiresByType application/rtf               "access plus 1 year"
  ExpiresByType application/vnd.ms-excel      "access plus 1 year"
  ExpiresByType application/vnd.ms-powerpoint "access plus 1 year" 
     
   








