3. 1. www.bilan.ch
• 38k Artikel
• 16k Impressions pro Tag
• 200 Redakteure
• 30+ neue Artikel pro Tag
• Lastspitzen durch TV-Werbung
• Migration Drupal => Craft
Unsere Idee:
• bestehende Inhalte in DB
schreiben
• Kein Servercaching
• Stellenweise Craft-Caching
Unsere Idee: schlechte Idee
4. Problem: Seitenaufbau zu langsam
• auf Startseite / Channelseiten
=> Zu viele DB-Zugriffe
=> Seite kann nicht ausgeliefert werden
Abhilfe:
• Debug Toolbar zur Problem-Analyse
• Eager-Loading
• Craft Caching
• Stellenweise direkter DB-Zugriff über
Module
=> von 2500 DB-Requests auf 600 herunter
Problem: Seitenaufbau bei hoher
Zugriffszahl noch immer zu langsam
Lösung: Server-Caching!
5. => Servercaching (yeah!)
• Wir bauen die Seite einmal auf (hier: nginx reverse
proxy)
• Server liefert Seite direkt aus dem Cache
• Alles super
PROBLEM: Nicht jeder User sieht
dieselben Inhalte
Lösung:
• Login-Status wird per JS ausgelesen
• Alle dynamischen Inhalte werden per JS
6. => Servercaching (jetzt aber: yeah!)
“Thereareonlytwohardthingsincomputer
science:namingthingsandcache
invalidation!“
Problem: Wann leere ich den Servercache?
• Bei jedem Speichern eines Eintrages? (200 Redakteure!)
• Zeitgesteuert wenn ein Artikel online erscheinen soll? (30+ Artikel
am Tag)
Lösungen mit dem Kunden diskutieren:
• Von alle 4 Stunden langsam auf einmal pro Stunde vorgetastet
• Dem Kunden die Möglichkeit bieten, Seiten jederzeit aus dem Cache zu
nehmen
7. Learnings bilan.ch
• frühzeitig auf grosse DB-Last achten (Debug
Toolbar)
• Servercaching nutzen, wann immer möglich
• Migration bestehender Inhalte nur per FeedMe
Plugin
• Seiten welche sich nicht cachen lassen
(Suchresultate) gegen Missbrauch schützen
• generateTransformsBeforePageLoad immer auf
true
• wenn Craft Caching, dann clever nutzen
(Zusammenspiel mit Servercaching)
• eigene DB-Indizes setzen
Nachteile:
• Servercaching erlaubt Änderungen nicht zu jedem
Moment, zeitgesteuerte Artikel müssen geplant
8. 2. www.femina.ch
• 18k Artikel
• 22k Impressions pro Tag
• 50 Redakteure
• 10+ neue Artikel pro Tag
• Migration Drupal => Craft
Unsere Idee:
• Learnings aus bilan.ch
verwenden
• Servercaching
• Alte Inhalte mit FeedMe
importieren
Unsere Idee: besser als vorher
9. Problem:
- Pro Channel sollen ALLE Artikel angezeigt
- Alle: bis zu 5000 Artikel…
Lösung:
• Artikel per Ajax nachladen
• Nachgeladene Inhalte werden wiederum per
nginx gecached
10. 3. www.friday-magazine.ch
• 4k Artikel / 2-sprachig
• 200k Impressions pro Tag
• 50 Redakteure
• 20+ neue Artikel pro Tag
• „Migration“ Craft => Craft
Unsere Befürchtung:
• Durch 200k Page-Impressions am
Tag unsere Server in Flammen
aufgehen sehen.
11. Ausgangslage:
• Kein Servercache, nur Craft-Cache
• Performance-Ausgleich durch Server-Power und entsprechende
Kosten
• Ständiges „Wheel of death“ im Control-Panel – Jobs können nicht
vollständig abgearbeitet werden
Nach unseren Anpassungen:
• Servercaching
• Backend und Frontend laufen stabil und schnell
• Kosten für das Server-Hosting sind massiv gesunken
• Redakteure sind nach kurzer Erklärung wie man den Servercache
leert auch glücklich
12. Welche Plugins wir nutzen:
• CP Field Inspect
• Feed Me
• Queue Manager
• Retour
• SEOmatic
• Twigpack