SlideShare ist ein Scribd-Unternehmen logo
1 von 12
High Traffic
Websites mit Craft
CMS umsetzen …
(… und trotzdem ruhig schlafen
können)
Stefan Friedrich
IWF Websolutions:
www.web-solutions.io
Mail: s.friedrich@iwf.ch
Craft Discord-Channel: stefanx
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
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!
=> 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
=> 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
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
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
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
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.
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
Welche Plugins wir nutzen:
• CP Field Inspect
• Feed Me
• Queue Manager
• Retour
• SEOmatic
• Twigpack

Weitere ähnliche Inhalte

Ähnlich wie High Traffic Websites mit Craft CMS umsetzen

Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Daniel Havlik
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Rubyvesparun
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012get on top gmbh
 
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwaltenSEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwaltenget on top gmbh
 
Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2Andreas von Studnitz
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseBenjamin Schmid
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateThorben Janssen
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
Redaktionelle Hochlastwebseiten am Beispiel von stern.de
Redaktionelle Hochlastwebseiten am Beispiel von stern.deRedaktionelle Hochlastwebseiten am Beispiel von stern.de
Redaktionelle Hochlastwebseiten am Beispiel von stern.deNils Langner
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveBokowsky + Laymann GmbH
 
Globetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHGlobetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHSebastian Heuer
 
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEMVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEOPEN KNOWLEDGE GmbH
 
Cloud Computing am Beispiel dctp.tv
Cloud Computing am Beispiel dctp.tvCloud Computing am Beispiel dctp.tv
Cloud Computing am Beispiel dctp.tvFabian Topfstedt
 
Studiosdigital wieninternational.at
Studiosdigital wieninternational.atStudiosdigital wieninternational.at
Studiosdigital wieninternational.atStudiosDigital GmbH
 
Client-side Performance Optimizations
Client-side Performance OptimizationsClient-side Performance Optimizations
Client-side Performance OptimizationsJakob
 
Seo Campixx 2015 - Technical SEO for Beginners
Seo Campixx 2015 - Technical SEO for BeginnersSeo Campixx 2015 - Technical SEO for Beginners
Seo Campixx 2015 - Technical SEO for BeginnersJan Berens
 

Ähnlich wie High Traffic Websites mit Craft CMS umsetzen (20)

Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
 
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwaltenSEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
 
Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2Vorstellung Hyvä: Modernes Frontend mit Magento 2
Vorstellung Hyvä: Modernes Frontend mit Magento 2
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBase
 
Wordpress im docker
Wordpress im dockerWordpress im docker
Wordpress im docker
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
WordPress Grundlagen Kurs
WordPress Grundlagen KursWordPress Grundlagen Kurs
WordPress Grundlagen Kurs
 
Query Result Caching
Query Result CachingQuery Result Caching
Query Result Caching
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
Redaktionelle Hochlastwebseiten am Beispiel von stern.de
Redaktionelle Hochlastwebseiten am Beispiel von stern.deRedaktionelle Hochlastwebseiten am Beispiel von stern.de
Redaktionelle Hochlastwebseiten am Beispiel von stern.de
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
 
Globetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHGlobetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HH
 
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEMVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
 
Cloud Computing am Beispiel dctp.tv
Cloud Computing am Beispiel dctp.tvCloud Computing am Beispiel dctp.tv
Cloud Computing am Beispiel dctp.tv
 
Studiosdigital wieninternational.at
Studiosdigital wieninternational.atStudiosdigital wieninternational.at
Studiosdigital wieninternational.at
 
Client-side Performance Optimizations
Client-side Performance OptimizationsClient-side Performance Optimizations
Client-side Performance Optimizations
 
Seo Campixx 2015 - Technical SEO for Beginners
Seo Campixx 2015 - Technical SEO for BeginnersSeo Campixx 2015 - Technical SEO for Beginners
Seo Campixx 2015 - Technical SEO for Beginners
 

High Traffic Websites mit Craft CMS umsetzen

  • 1. High Traffic Websites mit Craft CMS umsetzen … (… und trotzdem ruhig schlafen können)
  • 2. Stefan Friedrich IWF Websolutions: www.web-solutions.io Mail: s.friedrich@iwf.ch Craft Discord-Channel: stefanx
  • 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