Whilst I haven’t written many new articles recently I have spent considerable time updating and revising the behind-the-scenes side of things, namely various security (TLS) settings on my VPS that hosts several sites including this one. Another thing I have also worked to enhance recently is to improve my use of gzip, and a new format called brotli
Briefly, gzip (and brotli) can be used to compress resources before they are sent to the browser, which reduces the amount of data sent, and hence should mean a site loads faster. The downside is that compressing resources takes time, which could outweigh the gains from the smaller sizes. The ideal solution is to have resources compressed in advance, rather than compressed by the http server in realtime. Most of my websites use wordpress which contains lots of files in plugins, themes etc, so going through all of these and manually compressing them everytime there is an update would be impractical. The answer is to use a script which monitors the system for file changes, and creates compressed files as needed. Below is the script I have recently written to do exactly this.
#!/bin/bash inotifywait -m -q -e CREATE -e MODIFY -e MOVED_TO -r "/var/www/" --format "%w%f" --excludei '\.(jpg|png|gif|ico|log|sql|zip|gz|pdf|php|swf|ttf|eot|woff|cst|jst|br|cts)$' | while read file do if [[ $file =~ \.(css)$ ]]; then fname="${file%.*}" if [ -f "$fname".min.css ] then rm -f $file.gz rm -f $file.br zopfli --gzip $file bro --quality 11 --input $file --output $file.br chmod 664 $file.br chmod 664 $file.gz chown wordpress:wordpress $file.br chown wordpress:wordpress $file.gz else rm -f $file.gz rm -f $file.br cat $file | cleancss > $fname.cst cat $file | cleancss | bro --quality 11 --output $file.br zopfli --gzip $fname.cst -c > $fname.css.gz chmod 664 $file.br chmod 664 $file.gz chown wordpress:wordpress $file.br chown wordpress:wordpress $file.gz rm -f $fname.cst fi fi if [[ $file =~ \.(js)$ ]]; then fname="${file%.*}" if [ -f "$fname".min.css ] then rm -f $file.gz rm -f $file.br zopfli --gzip $file bro --quality 11 --input $file --output $file.br chmod 664 $file.br chmod 664 $file.gz chown wordpress:wordpress $file.br chown wordpress:wordpress $file.gz else rm -f $file.gz rm -f $file.br uglifyjs $fname.js > $fname.jst zopfli --gzip $fname.jst -c > $fname.js.gz bro --quality 11 --input $fname.jst --output $file.br chmod 664 $file.br chmod 664 $file.gz chown wordpress:wordpress $file.br chown wordpress:wordpress $file.gz rm -f $fname.jst fi fi origfs=$(wc -c < "$file") gzfs=$(wc -c <"$file.gz") brfs=$(wc -c <"$file.br") if [ "$origfs" -lt "$gzfs" ]; then rm $file.gz -f fi if [ "$origfs" -lt "$brfs" ]; then rm $file.br -f fi done
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”