Wydrukuj tę dokumentację Pokaż jako slajdy
Spis Treści
Konfiguracja oraz uruchomienie mod_brotli
brotli to szybka i dość lekka kompresja będąca bardziej sprawą w stosunku do GZIPa.
Przygotowanie plików w drzewie katalogów
cd /var/www/htdocs/virtuals/__VIRTUAL_HOST__/data
for x in `find ./ -type f -name '*.css'`; do bro --force --input $x --output ${x}.br ; done
for x in `find ./ -type f -name '*.css'`; do gzip -c $x > ${x}.gz ; done
for x in `find ./ -type f -name '*.js'`; do bro --force --input $x --output ${x}.br ; done
for x in `find ./ -type f -name '*.js'`; do gzip -c $x > ${x}.gz ; done
for x in `find ./ -type f -name '*.html'`; do bro --force --input $x --output ${x}.br ; done
for x in `find ./ -type f -name '*.html'`; do gzip -c $x > ${x}.gz ; done
Konfiguracja w Apache
httpd.conf
LoadModule brotli_module libexec/apache24/mod_brotli.so
Konfiguracja VirtualHost
Definicja katalogu
<Directory "/var/www/htdocs/virtuals/__VIRTUAL_HOST__/data">
# Specify Brotli-encoded assets
<Files *.js.br>
AddType "text/javascript" .br
AddEncoding br .br
</Files>
<Files *.css.br>
AddType "text/css" .br
AddEncoding br .br
</Files>
<Files *.svg.br>
AddType "image/svg+xml" .br
AddEncoding br .br
</Files>
<Files *.html.br>
AddType "text/html" .br
AddEncoding br .br
</Files>
# Specify gzip-encoded assets
<Files *.js.gz>
AddType "text/javascript" .gz
AddEncoding gz .gz
</Files>
<Files *.css.gz>
AddType "text/css" .gz
AddEncoding gz .gz
</Files>
<Files *.svg.gz>
AddType "image/svg+xml" .gz
AddEncoding gz .gz
</Files>
<Files *.html.gz>
AddType "text/html" .gz
AddEncoding gz .gz
</Files>
<IfModule mod_php5.c>
# [...]
Definicja właściwego VH
UWAGA
Ważna jest kolejność definicji kompresji. BROtli powinno być pierwsze, inaczej zostanie wybrany mod_deflate.
# [...]
<IfModule mod_headers.c>
# [...]
<IfModule mod_brotli.c>
# Serve br compressed CSS files if they exist
# and the client accepts br.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" -s
RewriteRule "^(.*)\.css" "$1\.css\.br" [QSA]
# Serve br compressed JS files if they exist
# and the client accepts br.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" -s
RewriteRule "^(.*)\.js" "$1\.js\.br" [QSA]
# Serve correct content types, and prevent mod_brotli double br.
RewriteRule "\.css\.br$" "-" [T=text/css,E=no-br:1]
RewriteRule "\.js\.br$" "-" [T=text/javascript,E=no-br:1]
<FilesMatch "(\.js\.br|\.css\.br)$">
# Serve correct encoding type.
Header append Content-Encoding br
# Force proxies to cache brped &
# non-brped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json application/x-font-ttf application/vnd.ms-fontobject image/x-icon
BrotliFilterNote Input brotli_input_info
BrotliFilterNote Output brotli_output_info
BrotliFilterNote Ratio brotli_ratio_info
LogFormat '"%r" %{brotli_output_info}n/%{brotli_input_info}n (%{brotli_ratio_info}n%%)' brotli
#CustomLog "|/usr/local/sbin/rotatelogs -n 7 /var/log/httpd/forum.vectraklub.pl/brotli.log 86400" brotli
#Don't compress content which is already compressed
#SetEnvIfNoCase Request_URI \ \.(gif|jpe?g|png|swf|woff|woff2) no-brotli dont-vary
# Make sure proxies don't deliver the wrong content
#Header append Vary User-Agent env=!dont-vary
</IfModule>
<IfModule mod_deflate.c>
# Serve gzip compressed CSS files if they exist
# and the client accepts gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]
# Serve gzip compressed JS files if they exist
# and the client accepts gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header append Content-Encoding gzip
# Force proxies to cache gzipped &
# non-gzipped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json application/x-font-ttf application/vnd.ms-fontobject image/x-icon
DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
#CustomLog "|/usr/local/sbin/rotatelogs -n 7 /var/log/httpd/forum.vectraklub.pl/deflate.log 86400" deflate
#Don't compress content which is already compressed
#SetEnvIfNoCase Request_URI \ \.(gif|jpe?g|png|swf|woff|woff2) no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
#Header append Vary User-Agent env=!dont-vary
</IfModule>
# [...]
Źródła w sieci internet
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

Gdy trzeba dołączyć inną (pod)stronę https://moinmo.in/HelpOnMacros/Include https://moinmo.in/HelpOnParsers
Nieprawidłowe argumenty "pagename, heading, level, from="regex", to="regex", sort=ascending|descending, items=n, skipitems=n, titlesonly, editlink"!