Delivering WordPress in 7KB

Avatar of Jack Lenox
Jack Lenox am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

In den letzten sechs Monaten habe ich mich zunehmend für das Thema Web-Nachhaltigkeit interessiert. Der CO₂-Fußabdruck des Internets war etwas, worüber ich mir früher nicht viele Gedanken machte, was überraschend ist, wenn man mein Interesse an Umweltthemen und die Tatsache bedenkt, dass mein Beruf webbasiert ist.

Das Web in einer sich erwärmenden Welt

Um es kurz zusammenzufassen: Ich habe letztes Jahr an MozFest in London teilgenommen. Zwischen den Sitzungen habe ich ein Whiteboard gescannt, um zu sehen, was ansteht, und entdeckte eine Sitzung mit dem Titel „Building a Planet-Friendly Web.“ Ich war ein wenig fassungslos. Worum zum Teufel sollte es dabei gehen?

Ich nahm an der Sitzung teil und die Augen öffneten sich. Was mir jetzt offensichtlich erscheint – aber damals eine Offenbarung war – war der immense Energiebedarf des Internets. Dieser Bedarf macht es zur größten kohlebefeuerten Maschine der Erde, was bedeutet, dass seine CO₂-Emissionen wahrscheinlich mindestens dem globalen Flugverkehr entsprechen. Immer mehr Menschen gehen online, aber dies, gepaart mit dem Aufkommen immer fetterer Websites, bedeutet, dass der Energiebedarf des Internets exponentiell wächst. Jedes zusätzliche übertragene Byte bedeutet mehr Energie, was in den meisten Ländern mehr CO₂ bedeutet.

Es ist allgemein anerkannt, dass wir das Ausdrucken von E-Mails vermeiden sollten, um Bäume zu retten, aber das führt zu der falschen Annahme, dass das Web ein grünes Medium ist. Ich muss leider sagen, das ist es nicht.

Gibt es einen anderen Weg?

Die gute Nachricht ist, dass es nicht so sein muss. Seit 2009 prüft Greenpeace die Energieverbräuche von Internetunternehmen und lobbyiert sie, sich durch ihre Clicking Clean Kampagne zu verbessern. Die Green Web Foundation verfügt über eine ständig wachsende Datenbank von Hosting-Unternehmen, die erneuerbare Energien nutzen oder sich zumindest zur CO₂-Neutralität verpflichtet haben. Und neue Werkzeuge entstehen, die uns, die wir am Web arbeiten, helfen, die Umweltauswirkungen unserer Produkte zu messen.

Es gibt auch einige großartige Ressourcen, wie Tim Fricks Designing for Sustainability, drei Jahre voller Vorträge von der SustainableUX Konferenz und peripheres Material, das uns zwar nicht explizit auf Nachhaltigkeit fokussiert, aber helfen kann, kohlenstoffärmere Websites zu erstellen.

Einführung in Susty WP

Ich beschloss, mich selbst herauszufordern, um zu sehen, wie effizient ich eine WordPress-Website verpacken könnte. Während ich dabei war, dachte ich: „Warum nicht die Website über Nachhaltigkeit und WordPress machen?“ Ich weiß, WordPress/Nachhaltigkeits-Inception. Cool, oder?

Und so wurde sustywp.com geboren. Mit seinem dazugehörigen Theme, Susty. Ich bin ziemlich stolz darauf sagen zu können, dass ich es geschafft habe, die Ladezeit der Homepage auf 7 KB Datenübertragung zu reduzieren. Tatsächlich habe ich sie auf 6 KB reduziert, aber die Meta-Daten, die Yoast hinzufügte, haben sie um fast ein ganzes KB erhöht! 😛 Da ich jedoch versuche, eine Botschaft zu verbreiten, hielt ich dies für einen akzeptablen Kompromiss.

Bevor ich ins Detail gehe, möchte ich ein paar wichtige Fakten teilen

Wie funktioniert das also?

Das Bemerkenswerte daran ist eigentlich, wie banal es ist. Stark inspiriert von Heydon Pickerings Eifer für weniger verdammten Code schreiben und Projekten wie Brad Frosts Death to Bullshit, habe ich eine radikale Entkernung von Underscores vorgenommen und alles entfernt, was ich nur konnte. Und um es klarzustellen: Es ist nicht so, als ob Underscores voller unnützem Kram wäre. Es ist ein sehr schlanker Ausgangspunkt für die Erstellung eines Themes. Ich bewundere es sehr und empfehle seine Nutzung uneingeschränkt. Es enthält jedoch bestimmte Annahmen, die nicht mit meinem spartanischen Ziel übereinstimmten, die kleinstmögliche WordPress-Website zu erstellen.

Wie zum Beispiel?

Navigation? Nein. Sidebar? Weg damit. Klassen? Nicht in meiner sozialistischen Utopie.

Angesichts der von mir gesetzten Einschränkungen musste alles, was in den DOM gelangte, einen sehr guten Grund haben, dort zu sein. Da dies ein Experiment war, verfolgte ich den etwas radikalen Ansatz, die Navigation auf eine eigene Seite zu verlagern. Das ist wunderbar befreiend und bedeutet, dass ich nicht den fast immer enttäuschenden Tanz durchlaufen musste, um zu überlegen, wie ich sie präsentabel mache, sie für die vielen Benutzer verstecke, die sich nicht darum kümmern, sicherstelle, dass sie robust genug für unendlich lange Listen mit endlosen Dropdowns ist usw.

Das bedeutet weniger HTML, weniger CSS und definitiv kein JavaScript! Gewinn, Gewinn, Gewinn.

Und die Sidebar? Nun, ich hatte schon immer eine Abneigung gegen Sidebars, also war das eine einfache Sache zu entfernen. Susty hat keinen Widget-Bereich. Ich bin sicher, es wird darüber hinwegkommen.

Gibt es noch mehr Fett, das wir abschneiden können? Nun, wenn wir kaum HTML haben wollen und minimales CSS wollen, brauchen wir dann wirklich all diese Klassen? Ich wollte versuchen, CSS so zu schreiben, wie es gedacht war, anstatt uns der Klassen- und Div-itis zu beugen, die die Branche durchdringen.

Sie brauchen vielleicht keine Web-Fonts

Neben Bildern, Videos und JavaScript ist ein weiterer Faktor, der zu aufgeblähten Websites geworden ist, Web-Fonts. Angesichts der Tatsache, dass es in Silicon Valley in Mode ist, dass jedes Startup als erste Geschäftstätigkeit seine eigene Schriftart in Auftrag gibt, scheint es, als ob jede besuchte Website eine Reihe von Schriftdateien herunterladen muss. Es mag nicht schlimm erscheinen, hundert Kilobytes für eine schöne Schriftart anzuhängen, aber wenn man dies mit den vielen verschiedenen Personen multipliziert, die Ihre Website auf verschiedenen Geräten und Browsern besuchen, können Schriften leicht Hunderte von Megabyte an Datenübertragung ausmachen – wenn nicht sogar Gigabyte/Terabyte/Petabyte für Websites mit höherem Traffic.
Benutzerdefinierte Web-Fonts sind auch ein potenzielles Antipattern für unsere Benutzer, für die

  1. Seitenaufrufe verlangsamen sich, da sie entweder einen Flash of unstyled text sehen oder, potenziell noch schlimmer, keinen Text, während die Schriftart geladen wird.
  2. Bis die Schriftart geladen ist, bemerken sie es nicht oder es ist ihnen egal.

Wenn Sie benutzerdefinierte Schriftarten verwenden müssen oder mit dem Flash of unstyled text kämpfen, ist font-display eine neue Eigenschaft, die den Browser anweisen soll, wie Schriftart-Downloads zu handhaben sind. Dieser Beitrag geht noch weiter darauf ein.

Fast jedes Gerät hat heutzutage einen halbwegs guten Satz installierter Schriftarten. Warum also nicht einen Stack potenzieller Schriftarten erstellen, die Sie sehen möchten, endend mit „serif“ oder „sans-serif“. Oder umarmen Sie diese Standard-Schriftarten ganz mit einem System-Schriftarten-Stack.

Ich wollte, dass Susty ein bisschen Swiss Style Ästhetik hat, also reicht mein Schriftarten-Stack von der perfekt proportionierten Helvetica (die alle Apple-Geräte standardmäßig haben) bis zu Sans-Serif, über Arial, Frutiger und Nimbus Sans L.

Als Ubuntu-Benutzer sehe ich Arial, was perfekt angenehm ist. Auf meinen Android-Geräten sehe ich die Standard-sans-serif-Schriftart (ich glaube, Droid Sans), die auf Mobilgeräten eigentlich recht gut funktioniert – man sollte fast denken, sie wurde dafür entwickelt!

Was noch? Standardkram. Wenig bis keine Bilder und SVG, wo möglich

Darüber hinaus ist es eigentlich nur Standard. Die Homepage von sustywp.com hat keine Bilder und nur ein SVG, das inline und nicht über eine HTTP-Anfrage geladen wird. Das CSS ist minimiert. Alles wird Gzipped. Der Server ist mit NGINX und Fast-CGI-Cache konfiguriert, um Inhalte aus dem Speicher zu liefern.

Bonus SPA-ähnliche Funktionen ohne Aufwand oder Code

Als ich meiner Freundin Daisy meine Pläne langweilte, fragte ich sie, wie sie konzeptionell dazu stehe, dass eine Website keine Navigation hat und stattdessen auf einer eigenen Seite über einen „Menü“-Button zu finden ist. Sie fand das in Ordnung. Als ich es ihr dann zeigte, sah ich gespannt zu, wie sie auf den Menülink klickte. Ihre Reaktion war, dass sie nicht wirklich darüber nachdachte, zum Menü zu klicken und das Menü erschien, als würde sie die Seite wechseln. Dies bestätigte eine meiner Befürchtungen, dass meine frühere Besessenheit, Seitenaufrufe beim Erstellen von Single-Page-Apps (SPAs) zu eliminieren, etwas ist, das nur wirklich Web-Developer-Typen stört. Die meisten Leute bemerken es nicht wirklich oder denken darüber nach. Wenn Sie also Ihre Website blitzschnell machen, sind die Seitenaufrufe selbst ohnehin fast unmerklich.

In diesem Fall dachte ich, warum nicht einfach so tun, als wäre es ein Menü-Overlay? Also fügte ich einen Schließen-Button und ein kleines bisschen JavaScript hinzu, um Sie vom Menü zurück zur vorherigen Seite zu bringen, wenn Sie darauf klicken. (Ich habe dies ursprünglich in PHP mit der `$_SERVER`-Superglobalen und `HTTP_REFERER` implementiert, aber dies bricht, wenn man etwas wie FastCGI-Cache zum Ausliefern von Seiten verwendet (d.h. für die Seiten, auf denen die `$_SERVER`-Superglobale nicht existiert).

Es kommt noch mehr

Wir alle wissen, dass Dinge immer besser sein können. Hier sind einige der Dinge, an denen ich arbeite, um Susty zu verbessern

  • Jeremy Keiths Buch Going Offline fertig lesen, um einen Service Worker implementieren und Susty noch performanter machen zu können.
  • Prüfen, wie ich Gutenberg implementieren kann. Es wird eine Menge Kilobytes hinzufügen, und das macht mich traurig! 😉
  • Derzeit wird sustywp.com in einem Rechenzentrum in London gehostet und von dort global ausgeliefert. Das bedeutet, dass jemand in Wellington, Neuseeland, nicht das volle Erlebnis haben wird! Ich habe einen langfristigen Plan, mein eigenes kleines CDN von Edge-Servern einzurichten (jeder gehostet von einem 100% erneuerbare Energie betreibenden Host am jeweiligen Standort, wo ich einen finden kann), die nur NGINX betreiben und gecachte Versionen der Website ausliefern. Dies ist eine vereinfachte Version dessen, wie wir Dinge auf WordPress.com VIP machen.

Zusammenfassend

Susty ist ein Beispiel für die extreme Anwendung von Techniken des nachhaltigen Designs. Ich schlage nicht vor, dass wir alle Websites mit genau dieser Methode bauen sollten. Aber ich denke, Nachhaltigkeit sollte in der Webdesign-Branche eine viel höhere Priorität haben. Es ist gut, darüber nachzudenken, Kilobytes zu sparen, wo immer wir können, und in Kilobytes statt Megabytes zu denken. Wenn Sie eine JavaScript-Interface-Bibliothek verwenden möchten, probieren Sie doch Choo.js, das React-ähnliche Funktionen bietet und nur 4 KB groß ist. Denken Sie daran, die NASA hat es geschafft, einen Mann auf dem Mond zu landen, mit nur etwa 50 KB Speicherplatz zur Verfügung.

Das Beste daran ist, dass effiziente Websites schnellere Websites bedeuten, was bedeutet

  • Glücklichere Benutzer
  • Bessere Suchmaschinenplatzierung
  • Glücklichere Server