Und eine statische Seite mit einer kurzen, handgeschriebenen css-Datei hat nach deren Meinung auch noch allerhand Verbesserungspotential
Ja. Die prüfen sehr formal, messen zwar die Zeit, beurteilen die aber nicht(*):
- Mehr als eine CSS-Datei? -> „Sie sollten diese vereinigen.“
- Nicht minifiziert -> „Sie sollten minifizieren“
Was das minifizieren betrifft sind die Jungs sehr streng. Ich wollte part tout die 100% haben und hab's dann mit ...
(Nur nachmachen wenn man weiß, was man tut!)
#!/bin/bash
##file: css_js-kompiler.sh
set -x
compact=1;
if [ -d ~/mounts/raspi4.box/var/www/XXXXXXX ]; then
ssh XXXXXXX@XXXXXXX /var/www/XXXXXXX/css_js-kompiler.sh
elif [ -d /var/www/XXXXXXX ]; then
cd /var/www/XXXXXXX
if [ $compact -eq 1 ]; then
cat css.editable.css | tr "\t\n\r" " " | sed -E "s/^ +//" | sed -E "s/ +$/ /" | sed -E 's/[ \t\n\r]{1,}/ /g' | sed -E "s/ *} */}/g" | sed -e "s/ *{ */{/g" | sed -E "s/([:;,]) */\1/g" | tee css.css | gzip -9 -c > css.css.gz
cat buttons.editable.js | tr "\t\n\r" " " | sed -E "s/^ +//" | sed -E "s/ +$/ /" | sed -E "s/ {2,}/ /g" | sed -E "s/ *([=(){}:;,]) */\1/g" | tee buttons.js | gzip -9 -c > buttons.js.gz
else
cat css.editable.css | tee css.css | gzip -9 -c > css.css.gz
cat buttons.editable.js | tee buttons.js | gzip -9 -c > buttons.js.gz
fi
ls -l css.*;
ls -l buttons*
else
echo "Ups. Da stimmt was nicht.";
exit 1;
fi
... geschafft. Wer das zu Hause nachmachen will:
- Ich habe den Code als „schlecht“ markiert, weil er
a) experimentell ist und
b) sehr genau an eigene Bedürfnisse angepasst werden muss und
c) weil ich nicht weiß ob er auch mit fremden Zeug funktioniert:
so ruft sich das Skript u.a. selbst per ssh auf, wenn ich es auf dem sshfs-mount starte (Bei mir also im Terminal des Editors). Auch bestehen gerade bei Javascript bestimmte Anforderung an die Notation, sonst sind die Skripte nach dem minifizieren (Zeilen mit tr und sed) kaputt.
- Das
cut Dateiname
steht drin, weil es ursprünglich mal mehrere Dateien waren, die auch vereinigt wurden. - Die Dateien mit „editable“ im Namen werden vom Skript nicht angefasst und nur diese sollten geändert werden, dann das Skript neu aufrufen...
- Die Dateien mit der Endung '.gz' werden erzeugt weil mein Webserver die ausliefert, wenn der Client(Browser) behauptet, dass er das mag. So muss er nicht bei jedem Abruf selbst packen: Das ist ein Raspi und Prozessorleistung ist also vergleichbar knapp.
*) https://developers.google.com/speed/pagespeed/insights/?hl=de misst und beurteilt die Zeit und gibt noch mehr Tipps. (Auch da schaffe ich die 100%…)