Priorisierung von CSS Cache
Wir haben das Problem (oder ich), dass das CSS Cache Children-Templates kaputt macht. Wir müssen das uns genauer überlegen, @mor meinte das ist relativ schnell umsetzbar.
Problem
Hier ist nur ein Beispiel von vielen CSS Regeln
Children Template basiert auf Template Presentation. Im Parent Template wird folgende CSS Regeln gesetzt:
h1, h2, h3, h4, h5, h6 {
font-weight: 300;
/* ... */
}
Im Kunden Children-Template ändere ich die font-weight
Eigenschaft in einer kunden-children-template.css
Datei:
h1, h2, h3, h4, h5, h6 {
font-weight: 500;
}
Diese Datei packe ich durch QUIQQER Event an diese Stelle:
<head>
<!-- ... -->
{fetch template="template/head/styles.html" Template=$Template} <!-- Parent Template CSS Dateien -->
{template_event name="quiqqer::template::header::afterCSSstyles" Template=$Template} <!-- Hier kommt der Link zu "kunden-children-template.css" Datei -->
{$settingsCSS}
<!-- ... -->
</head>
Wenn man für Kunden entwickelt, arbeitet man ohne Caching. Sonst ist das extrem nervig und verlangsamt das ganze Prozess. Ohne CSS Cache funktioniert das Beispiel mit h-Elemente nach dem Cascading-Prinzip. Schaltet man CSS Cache ein, landen Children Template CSS Regeln willkürlich in einer gemeinsamen Datei.
Man kann zwar im Children Template immer mit "stärkerem" CSS Selektor arbeiten:
body h1, body h2, body h3, body h4, body h5, body h6 {
font-weight: 500;
}
aber da kommt man schnell ins sog CSS-selector-war. Außerdem mit body h2
überschreibe ich alle Controls, wo möglicherweise explizit was anders gemacht werden soll. Es kann sein, dass es mit h-Elementen nicht ganz ersichtlich ist, aber das ist nur ein einfaches Beispiel.
Das Problem habe ich schon seit mehreren Monaten. Ich habe tatsächlich mit body
den CSS Selektor "verstärkt" aber das hat mehr Probleme verursacht als gelöst. Daher dieses Ticket, was wir zusammen @henbug, @mor und ich besprechen müssen.
Vorschläge
- Priorisierung von CSS Dateien, die zu einer CSS zusammengeworfen werden.
- Child CSS Datei nicht zusammen mit allen anderen CSS Regeln cachen. Ich denke jetzt, dass das doch keine gute Lösung ist
🤔 - Im Child Template das Caching von der Datei ausschließen. Wenn ich das richtig im Kopf habe, gibt es dafür schon ein Attribute (habe leider nicht mehr im Kopf, was das war). Dadurch bekommt man am Ende nicht 2 CSS Dateien, sonder 3: die 2 von QUIQQER generierte und die eine von Child Template. Es wäre gut, wenn diese Datei trotzdem optimiert wird.
Ich komme auf euch nächste Woche zu.