Return to Video

Make it static!

  • 0:00 - 0:24
    rc3-nowhere Vorspannmusik
  • 0:24 - 0:30
    Herald: Herzlich willkommen auf der Chaos
    West stage. Der nächste Talk heißt "make it
  • 0:30 - 0:36
    static" und es wird darum gehen, warum man
    vielleicht nicht ein fancy CMS hernehmen
  • 0:36 - 0:40
    sollte, dass eine Menge Abhängigkeiten
    hat. Und wir wissen ja nicht erst seit
  • 0:40 - 0:46
    Log4Shell, dass die auch unerwartet große
    Probleme machen können. Der Talk wird von
  • 0:46 - 0:52
    einem Studenten an der TU Darmstadt, der
    Avocado heißt, gehalten. Ein herzliches
  • 0:52 - 0:54
    Willkommen und ich freue mich schon sehr
    auf deinen Talk.
  • 0:54 - 0:59
    Avocadoom: Hi, ja, vielen Dank erst mal
    für die nette Begrüßung. Du hast es schon
  • 0:59 - 1:02
    angesprochen. Das wird auch so ein
    bisschen das Thema werden.
  • 1:02 - 1:05
    Sicherheitslücken in CMS und wie man das
    vielleicht mit statischen Seiten umgehen
  • 1:05 - 1:09
    kann. Erst einmal herzlich willkommen zu
    meinem Talk make it static. Ich habe noch
  • 1:09 - 1:12
    kurz eine Slide eingebaut in der ihr einen
    QR-code habt den ich euch ganz kurz mal
  • 1:12 - 1:15
    abscannen lasse, wenn ihr den abscannen
    wollt, da seht ihr die Slides auch noch
  • 1:15 - 1:18
    mal, falls ihr was nachlesen wollt, oder
    nicht ganz hinterherkommt oder zum
  • 1:18 - 1:23
    Beispiel euch die vergrößern wollt. So,
    jetzt zu mir. Ich bin Avocadoom. Ich
  • 1:23 - 1:28
    studiere aktuell an der TU Darmstadt bzw.
    Thilo Billerbeck ist mein richtiger Name
  • 1:28 - 1:33
    und genau, ihr findet mich auf
    verschiedenen Social-Media-Kanälen. Ich
  • 1:33 - 1:36
    mache auch nebenbei tatsächlich
    Webentwicklung und Webdesign. So ein
  • 1:36 - 1:40
    bisschen. Deswegen stecke ich in diesem
    Thema ein bisschen tiefer drin. Und ja,
  • 1:40 - 1:43
    ich freue mich jetzt auf jeden Fall schon,
    euch das Thema ein bisschen präsentieren
  • 1:43 - 1:49
    zu können. Aktuelle Situation ist erstmal
    so ein bisschen der Einstieg, den ich euch
  • 1:49 - 1:52
    geben möchte und aktuelle Situation
    beschreibt es schon ganz gut, weil aktuell
  • 1:52 - 1:56
    haben wir ja eine Sicherheitslücke, die
    schon relativ krass und bekannt ist und
  • 1:56 - 1:59
    ich möchte euch erstmal so ein bisschen
    sagen, warum vielleicht static sites eine
  • 1:59 - 2:04
    coole Idee sind. Da habe ich so ein
    bisschen im Internet etwas rausgesucht.
  • 2:04 - 2:07
    Das sind Artikel die tatsächlich vor
    Log4Shell noch erschienen sind. Als ich
  • 2:07 - 2:11
    diese Präsentation angefangen habe zu
    erstellen, gab es diese Lücke noch gar
  • 2:11 - 2:16
    nicht. Und ihr seht jetzt so ein bisschen,
    die Artikel kommen von Heise oder t3n. Es
  • 2:16 - 2:20
    geht hier zum Beispiel um Drupal oder
    WordPress oder irgendein Plugin. Und in
  • 2:20 - 2:24
    der Regel sind das irgendwie immer
    Sicherheitslücken, die dann irgendwann
  • 2:24 - 2:30
    erkannt werden oder entdeckt werden und wo
    dann zu einem schnellen Update aufgerufen
  • 2:30 - 2:35
    wird. Und die Sache ist dann immer so ein
    bisschen, dass man halt auch schnell
  • 2:35 - 2:39
    agieren muss. Und viele setzen sich halt
    so ein WordPress oder Drupal so dahin und
  • 2:39 - 2:42
    richten es einmal ein und pflegen das dann
    nicht. Und das kann dann halt super
  • 2:42 - 2:46
    schnell mal anfällig für irgendwelche
    Sicherheitslücken werden. Und da ist halt
  • 2:46 - 2:52
    eigentlich immer schnelles Handeln
    gefragt. Zu dem ganzen Backend Sachen so
  • 2:52 - 2:57
    ein bisschen bei Content Management
    Systemen gibt es ja generell immer so zwei
  • 2:57 - 3:02
    verschiedene Lösungen oder Arten, wie man
    das angehen kann. Es gibt ja die fertig
  • 3:02 - 3:06
    Lösungen, die bekannten WordPress, Joomla,
    Drupal oder auch modernere Systeme und die
  • 3:06 - 3:10
    brauchen halt in der Regel immer
    regelmäßig Pflege und Updates, um
  • 3:10 - 3:15
    vernünftig funktionieren zu können, keine
    Sicherheitslücken zu bieten. Und auch drum
  • 3:15 - 3:21
    herum muss immer um alles gesorgt sein.
    Sie benötigen ein sauberes und sicheres
  • 3:21 - 3:27
    Setup und das betrifft vor allen Dingen
    nicht nur das System an sich, sondern vor
  • 3:27 - 3:31
    allen Dingen auch alle Systeme drumherum,
    zum Beispiel Datenbanken oder Server an
  • 3:31 - 3:36
    sich. Na, wenn euer System sicher ist und
    dann auf einmal jemand durch eine
  • 3:36 - 3:39
    Datenbank Lücke bei euch reinkommt, dann
    ist euch halt auch nicht geholfen oder
  • 3:39 - 3:43
    Rootzugriff auf euren Server bekommt, dann
    habt ihr halt auch irgendwie ins Gras
  • 3:43 - 3:48
    gebissen. Da gibt es noch so ein bisschen
    so eine andere Gattung von Systemen, die
  • 3:48 - 3:52
    einem immer wieder begegnen. Das sind die
    sogenannten Eigenbauten. Die haben noch
  • 3:52 - 3:55
    mal ein bisschen mehr Pfeffer als die
    Fertiglösung bei manchen Dingen, wenn man
  • 3:55 - 4:00
    sich da nicht ordentlich drum kümmert. Die
    haben halt auch die ähnlichen Probleme wie
  • 4:00 - 4:05
    die Fertiglösungen, das ist ganz klar.
    Aber vor allen Dingen haben sie auch noch
  • 4:05 - 4:09
    den Nachteil, dass man halt ganz viele
    Dinge, die von den CMS berücksichtigt
  • 4:09 - 4:13
    wurden mit bedenken muss, zum Beispiel
    SQL-Injection oder Cross Site Scripting
  • 4:13 - 4:16
    und Ähnliches. Und wenn man sich das halt
    nicht alles mit anschaut, dann kann einem
  • 4:16 - 4:19
    das auch ganz schnell um die Ohren
    fliegen. Und darum muss man sich halt die
  • 4:19 - 4:23
    Frage stellen: braucht man das wirklich?
    Weil wenn man einmal in das System
  • 4:23 - 4:26
    gelangt, über welche Stelle auch immer,
    hat man meistens relativ schnell Vollzugriff
  • 4:26 - 4:30
    und wenn man Vollzugriff hat,
    dann sieht es eher schwierig aus. Gerade
  • 4:30 - 4:35
    wenn man eine größere Seite ist, kann das
    sehr unangenehm werden. Ein weiterer
  • 4:35 - 4:39
    Punkt, den man bei einem Content
    Management System so ein bisschen beachten
  • 4:39 - 4:43
    muss, ist der Wartungsaufwand. Ich hatte
    es gerade eben schon angesprochen die
  • 4:43 - 4:46
    Dinger müssen regelmäßig und teilweise
    auch sehr akut gepflegt werden. Man muss
  • 4:46 - 4:52
    dafür Zeit aufwenden, sie müssen relativ
    schnell und regelmäßig gepflegt werden und
  • 4:52 - 4:55
    auch das Hostsystem drumherum braucht
    regelmäßig Pflege und Updates, weil wenn
  • 4:55 - 4:58
    das out of date ist, dann geht es halt
    auch nicht. Viele Systeme können das
  • 4:58 - 5:04
    inzwischen automatisch übrigens. Aber auch
    da gibt es zum Beispiel Major Updates, die
  • 5:04 - 5:07
    meistens manuell eingespielt werden müssen
    oder Plugins Updates, die auch gerne mal
  • 5:07 - 5:12
    manuelles Einspielen erfordern. Außerdem
    kann es sein, dass euch zwischendurch mal
  • 5:12 - 5:16
    die Features brechen, bei WordPress zum
    Beispiel oder so im Theming oder Plugin
  • 5:16 - 5:20
    Bereich. Das heißt, wenn größere Versionen
    von WordPress oder Co ausrollen und die
  • 5:20 - 5:25
    halt geupdatet werden müssen, weil
    Sicherheitsupdates benötigt werden, dann
  • 5:25 - 5:28
    müsst ihr halt auch entsprechend wieder
    Zeitaufwand da reinstecken, das alles zu
  • 5:28 - 5:31
    portieren und entsprechend anzupassen.
    Weil ansonsten habt ihr irgendwie nicht
  • 5:31 - 5:34
    eine schöne Seite da liegen, sondern nach
    dem nächsten Major Update auf einmal
  • 5:34 - 5:42
    irgendwas, was mehr aussieht wie bekannte
    Blog Seiten aus dem Internet. Und genau
  • 5:42 - 5:47
    außerdem müsst ihr immer da einen großen
    Invest reinstecken. Und dann gibt es noch
  • 5:47 - 5:51
    etwas, was ich als Plugin-Hölle bezeichnen
    würde. Das kennt man übrigens auch [bei]
  • 5:51 - 5:55
    WordPress. Der Begriff fällt heute leider
    relativ häufig. Es tut mir leid, aber
  • 5:55 - 5:58
    gerade da sieht man das sehr häufig, dass
    da halt super viele Plugins reingesteckt
  • 5:58 - 6:01
    werden. Und das klingt erst mal ganz cool.
    Ich hole mir irgendwie mein System, dann
  • 6:01 - 6:05
    hole ich mir lauter Features da rein, pack
    das alles so in eine Kiste und dann läuft
  • 6:05 - 6:09
    es, das Problem ist bloß. Je mehr Plugins
    man eigentlich da rein packt, desto
  • 6:09 - 6:13
    schlimmer wird es eigentlich und desto
    mehr Abhängigkeiten erzeugt man. Und wenn
  • 6:13 - 6:16
    das nächste große Update kommt, kann halt
    irgendwas kaputt gehen. Und dieser Zustand
  • 6:16 - 6:20
    ihr sehts auch unten. Der nimmt halt in
    der Regel mit dem Alter der Seite zu und
  • 6:20 - 6:24
    irgendwann habt ihr mal irgendwas, was zum
    Beispiel nicht maintained wird oder nicht
  • 6:24 - 6:27
    ordentlich mit dem neuen Update
    funktioniert. Und dann habt ihr plötzlich
  • 6:27 - 6:33
    eine Seite, die aussieht wie was auch
    immer oder einfach komplett offline ist.
  • 6:33 - 6:38
    Noch eine weitere Sache, die einem halt
    auffallen kann sind Skalierungsprobleme.
  • 6:38 - 6:42
    Das trifft jetzt kleinere Seiten, die
    Blogs und Co eher weniger. Aber wenn ihr
  • 6:42 - 6:46
    zum Beispiel einen Talk über Kopierer
    haltet und auf einmal plötzlich die halbe
  • 6:46 - 6:49
    Weltkugel auf eurem Blog habt, dann wollt
    ihr vielleicht gucken, dass das auch
  • 6:49 - 6:54
    ordentlich skaliert. So Systeme skalieren
    meistens an sich sehr gut und auch die
  • 6:54 - 6:58
    Webserver an sich, die skalieren halt
    ordentlich. Aber wenn ihr zum Beispiel
  • 6:58 - 7:01
    eine Seite mit einem relativ komplexen
    Aufbau habt oder halt eine große Datenbank
  • 7:01 - 7:06
    dahinter mit Content, viele Queries, also
    Datenbankaufrufe, die bei einer Seite
  • 7:06 - 7:10
    durchgeführt werden müssen, dann kann es
    euch halt super schnell passieren, dass
  • 7:10 - 7:14
    die Last auf dem Server halt auch
    ordentlich hoch wird und der nächste Punkt
  • 7:14 - 7:18
    der noch dabei ist, ist halt eine
    Datenbank, die skaliert halt auch meistens
  • 7:18 - 7:22
    relativ gut mit. Aber wenn ihr anfangt
    irgendwie die Seite zu expandieren auf
  • 7:22 - 7:25
    mehrere Server oder so, dann seid ihr
    irgendwann auch relativ schnell an dem
  • 7:25 - 7:29
    Punkt, wo ihr merkt, dass das gar nicht so
    einfach ist. Und was ein Problem ist, ist
  • 7:29 - 7:34
    halt, wenn so eine große Last auftritt,
    dann ist halt erst mal die ganze Seite
  • 7:34 - 7:38
    offline und das ist halt auch nicht so
    cool, weil dann seid ihr gar nicht mehr
  • 7:38 - 7:42
    erreichbar und nicht nur schlecht, sondern
    wirklich komplett gar nicht mehr. Und
  • 7:42 - 7:46
    jetzt kommt natürlich der große Moment
    Magic Fairy Dust Static Sites to the
  • 7:46 - 7:51
    rescue oder vielleicht auch nicht, weil
    vielleicht lösen sie jetzt auch nicht alle
  • 7:51 - 7:55
    eure Probleme, aber vielleicht einige. Und
    dazu kommen wir jetzt ein bisschen.
  • 7:55 - 8:00
    Erstmal natürlich so ein bisschen der
    Punkt an sich: Was sind denn überhaupt
  • 8:00 - 8:06
    statische Seiten? So eine statische Seite
    ist im Prinzip, wie der Name schon sagt,
  • 8:06 - 8:10
    eine Seite, die halt nicht irgendwie
    dynamisch generiert wird. Das heißt, da
  • 8:10 - 8:13
    ist kein Content Management System im
    Hintergrund, was das Ding zusammenbaut
  • 8:13 - 8:19
    oder ähnliches, sondern die Seite wird "as
    is" an den Client ausgeliefert. So eine
  • 8:19 - 8:26
    Seite besteht dabei meistens aus HTML. Das
    kennt ihr mit Sicherheit das ist einfach
  • 8:26 - 8:29
    Hypertext Markup Language, also wie eure
    Seite aufgebaut ist. CSS - Cascading Style
  • 8:29 - 8:35
    Sheets. Also wie genau eure Seite am Ende
    aussehen soll. Wie sie sich verhalten
  • 8:35 - 8:40
    soll, wenn bestimmte Dinge gehovert werden
    und so. Und dann gibt es natürlich noch
  • 8:40 - 8:43
    JavaScript und Co. Habe ich jetzt das mal
    genannt, weil es auch heutzutage so was
  • 8:43 - 8:47
    Web Assembly gibt. Und das sind
    Komponenten, die dafür sorgen, dass eurer
  • 8:47 - 8:52
    Seite Leben eingehaucht wird und dass sie
    dynamisch wird. Das habe ich jetzt auch
  • 8:52 - 8:57
    bewusst ein bisschen gehighlighted, weil
    es tatsächlich so ist, dass das bei
  • 8:57 - 9:00
    statischen Seiten euer einziger Anker sein
    wird, wie ihr Dynamik in eure Seite
  • 9:00 - 9:04
    reinbringt. Das heißt, ihr macht das nicht
    mehr serverseitig, sondern ihr macht es
  • 9:04 - 9:10
    clientseitig über JavaScript und nutzt
    Scripts, um halt dort die nötigen
  • 9:10 - 9:14
    Komponenten reinzuziehen und so
    entsprechend das Ganze ein bisschen
  • 9:14 - 9:21
    lebhafter zu machen. Um so eine statische
    Seite zu bauen, habt ihr sogenannte Static
  • 9:21 - 9:27
    Site Generators. Das ist im Prinzip euer
    Toolbelt euer Werkzeuggürtel, um halt
  • 9:27 - 9:32
    entsprechend solche Seiten aufzubauen. Und
    die verschmelzen im Prinzip Templates und
  • 9:32 - 9:40
    also Vorlagen und Inhalte zu einem
    Gesamtkonstrukt. Das Ganze läuft auch
  • 9:40 - 9:47
    meistens so, dass Inhalte und das Template
    an sich relativ strikt getrennt sind. Das
  • 9:47 - 9:51
    heißt, ihr schreibt das nicht irgendwie in
    HTML Code rein, sondern ihr schreibt eure
  • 9:51 - 9:55
    Inhalte in einem relativ einfachen Format
    oder in einem strukturierten Format auf,
  • 9:55 - 10:00
    schreibt dann auf der anderen Seite, wie
    das Ganze aufgebaut sein soll und am Ende
  • 10:00 - 10:05
    verschmilzt das Ganze im Prinzip zu einem
    Gesamtkonglomerat und wird so zu eurer
  • 10:05 - 10:11
    statischen Seite. Das heißt aber auch,
    dass diese Seiten entsprechend schon beim
  • 10:11 - 10:17
    Deployment, also wenn ihr die Seite auf
    den Server schiebt, generiert und
  • 10:17 - 10:21
    fertiggestellt werden. Das heißt, sobald
    die Seite auf dem Server ist, muss die im
  • 10:21 - 10:23
    Prinzip gar nicht mehr zusammengebaut
    werden, sondern einfach nur ausgeliefert
  • 10:23 - 10:28
    wie eben schon gesagt. Außerdem gibt es da
    noch ein paar weitere Punkte, nämlich
  • 10:28 - 10:34
    werden Metadaten generiert. Wenn ihr
    diese statischen Seiten generiert, das
  • 10:34 - 10:36
    heißt ihr habt auch entsprechend
    Zusatzinformationen, die euch der
  • 10:36 - 10:40
    Generator automatisch zur Verfügung
    stellt, wie zum Beispiel Autoren, die
  • 10:40 - 10:44
    Textlänge kann man mit Sicherheit auch bei
    einigen rausziehen. Das Datum, wann das
  • 10:44 - 10:48
    ganze erstellt wurde. Irgendwelche Git
    Informationen. Das sind alles
  • 10:48 - 10:50
    Informationen, die euch dann helfen,
    entsprechend den ganzen Content ein
  • 10:50 - 10:54
    bisschen richer zu machen und ihn auch
    besser, strukturierbar, auffindbar und
  • 10:54 - 11:00
    suchbarer zu machen. Und genau das ist
    auch noch ganz wichtig. Außerdem gibt es
  • 11:00 - 11:05
    zusätzliche Features, die auch noch beim
    static site generator dabei sind, nämlich
  • 11:05 - 11:13
    sowas wie das Anlegen und Rendering von
    JavaScript oder CSS. Das heißt, dass eure
  • 11:13 - 11:18
    Stylesheets entsprechend schon minifiziert
    werden und sowas, was ihr vielleicht auch
  • 11:18 - 11:23
    von Webentwicklung an sich kennt, falls
    ihr da schon mal was gemacht habt. Hash
  • 11:23 - 11:27
    Generierung zur Verifizierung, dass die
    Dateien richtig übertragen wurden, z.B.
  • 11:27 - 11:30
    die CSS-Dateien. Dazu komme ich später
    noch mal. Oder die Bildverarbeitung, um
  • 11:30 - 11:33
    dafür zu sorgen, dass die Bilder
    entsprechend relativ klein sind, die ihr in
  • 11:33 - 11:38
    eurer Seite einbaut. Also alles
    Convenience Tools, die ihr quasi nutzen
  • 11:38 - 11:42
    könnt, um in eurer Seite ein entsprechend
    vernünftiges Erlebnis bieten zu können.
  • 11:42 - 11:47
    Jetzt denkt ihr euch mit Sicherheit, das
    nutzt doch keiner so, das klingt doch
  • 11:47 - 11:51
    total kompliziert und das will ich doch
    überhaupt nicht haben. Und da habe ich
  • 11:51 - 11:54
    euch mal ein paar Beispiele mitgebracht.
    Zum Beispiel seht ihr da oben links
  • 11:54 - 11:59
    nationalgeographic.co.uk Das ist
    tatsächlich ein relativ bekanntes und
  • 11:59 - 12:03
    populäres Beispiel. Die haben gatsby als
    Static Site Generator eingesetzt, dazu
  • 12:03 - 12:07
    komme ich auch gleich nochmal. Und ja, da
    würde man im ersten Moment gar nicht davon
  • 12:07 - 12:10
    ausgehen, dass die Seite statisch
    generiert ist. Ist sie aber komplett und
  • 12:10 - 12:16
    das macht sie entsprechend auch für hohe
    Lasten relativ gut nutzbar und sorgt auch
  • 12:16 - 12:19
    dafür, dass die Seite, hohe Anfragen
    entsprechend gut verarbeiten kann, und
  • 12:19 - 12:22
    auch schnell beim Nutzer ist. Da habe ich
    noch ein paar Seiten aus dem Entwickler
  • 12:22 - 12:27
    Bereich mitgebracht, oben rechts seht ihr
    das Ionic Framework für mobile Apps. Unten
  • 12:27 - 12:32
    links, das kann vielleicht auch einige
    schon. Das ist die 1Password Hilfe für so
  • 12:32 - 12:37
    Dokumenten- Dokumentation eignet sich das
    tatsächlich perfekt, sowas statisch zu
  • 12:37 - 12:40
    generieren, weil das ändert sich nicht so
    oft. Und unten rechts auch relativ
  • 12:40 - 12:46
    unbekannt. Nein, Let's Encrypt natürlich
    auch komplett statisch generiert auch da
  • 12:46 - 12:49
    hat die Seite große Nachfragen und
    profitiert natürlich davon, wenn sowas
  • 12:49 - 12:56
    entsprechend schon fertig generiert ist.
    Es gibt so ein paar Static Site Generators
  • 12:56 - 13:00
    die ich hier mal aufgelistet habe. Das
    sind übrigens, habe noch nicht erwähnt,
  • 13:00 - 13:04
    alles in der Regel Command Line Programme,
    das heißt ihr habt kein User Interface,
  • 13:04 - 13:07
    sondern - also -, kein GUI, kein Graphical
    User Interface, sondern macht das alles
  • 13:07 - 13:11
    über die Kommandozeile. Darauf komme ich
    aber auch gleich noch mal zu sprechen. Ihr
  • 13:11 - 13:16
    habt oben links Hugo, das ist ein Static
    Site Generator, der mit GO funktioniert
  • 13:16 - 13:21
    und als Binary ausgeliefert wird und
    relativ schnell und einfach funktioniert
  • 13:21 - 13:26
    und für die meisten Use Cases ausreicht.
    Daneben Jekyll. Das ist mehr so der
  • 13:26 - 13:29
    Platzhirsch, den es eigentlich schon seit
    Ewigkeiten gibt. Ist in Ruby geschrieben,
  • 13:29 - 13:32
    hat Pluginsupport wird glaube ich von
    GitHub immer noch für statische Seiten
  • 13:32 - 13:37
    empfohlen und bietet euch ein bisschen
    mehr Flexibilität als Hugo, hat aber den
  • 13:37 - 13:40
    Nachteil, dass es zum Beispiel auch
    relativ viel Ruby mit sich schleppt, und
  • 13:40 - 13:45
    man sich mit der Ruby Toolchain mal
    auseinandersetzen sollte. Für Leute, die
  • 13:45 - 13:48
    schon mal mit JavaScript gearbeitet haben,
    gibt es hier zum Beispiel ganz oben rechts
  • 13:48 - 13:55
    auch Eleventy, wie gesagt JavaScript als
    Backendsprache und arbeitet ähnlich wie
  • 13:55 - 13:59
    Hugo und wird auch gerne mal in andere
    Toolchains mit integriert. Unten links
  • 13:59 - 14:02
    seht ihr Gatsby das ist ein Static Site
    Generator der ein bisschen mehr macht als
  • 14:02 - 14:06
    die anderen. Der arbeitet mit React und
    kann entsprechend auch Seiten generieren,
  • 14:06 - 14:13
    die ein bisschen mehr interaktiver sind
    und die ohne viel Aufwand quasi auch dafür
  • 14:13 - 14:16
    sorgen, dass bestimmte fortgeschrittene
    Techniken, die ich euch später noch mal
  • 14:16 - 14:21
    zeigen werde, auch direkt mit eingebaut
    werden können und macht eure Seite noch
  • 14:21 - 14:25
    dynamischer und sorgt dafür, dass sie noch
    weniger unterscheidbar von klassischen CMS
  • 14:25 - 14:31
    Seiten ist. Ganz unten rechts habe ich
    euch noch Astro mal eingefügt. Das ist ein
  • 14:31 - 14:35
    relativ neues Tool, wenn ihr zum Beispiel
    schon mit React oder Vue oder Svelte, das
  • 14:35 - 14:38
    sind alles Frontend Frameworks, gearbeitet
    habt, ist das vielleicht was für euch. Da
  • 14:38 - 14:42
    könnte ihr nämlich genau diesen Code
    schreiben von diesen entsprechenden
  • 14:42 - 14:45
    Frameworks und dann wird euch das komplett
    statisch ohne JavaScript raus gerendert.
  • 14:45 - 14:50
    Das heißt, da müsst ihr nichts neu lernen,
    sondern einfach easy anfangen eure
  • 14:50 - 14:55
    statische Seite zu bauen. Genau. Ich
    trinke mal ganz kurz was und dann erzähle
  • 14:55 - 15:00
    ich euch mal ein bisschen, wie das ganze
    überhaupt funktioniert. Und zwar klingt
  • 15:00 - 15:02
    das alles erst mal ein bisschen
    überfordernd Ich habe euch jetzt
  • 15:02 - 15:07
    wahnsinnig viel über Sicherheitslücken und
    über die Gründe für Static Site Generators
  • 15:07 - 15:09
    erzählt, aber ihr denkt euch
    wahrscheinlich wovon rede ich da
  • 15:09 - 15:14
    überhaupt? Dafür habe ich mir ein Beispiel
    mitgenommen von meinem Home Hackspace,
  • 15:14 - 15:18
    weil wir arbeiten tatsächlich mit Static
    Site Generators, dass ist
  • 15:18 - 15:22
    darmstadt.ccc.de. Das wird bisher mit
    Jekyll gebaut. Das habe ich neulich auf
  • 15:22 - 15:27
    Hugo portiert und in den folgenden Folien
    seht ihr auch so ein bisschen Code daraus,
  • 15:27 - 15:30
    deswegen wollte ich euch mal kurz sagen,
    dass das daher kommt und wir sind damit
  • 15:30 - 15:35
    auch sehr zufrieden. Und ich erzähle euch
    auch so ein bisschen warum. Wenn ihr so
  • 15:35 - 15:38
    einen Static Site Generator erst mal euch
    rausgesucht und installiert habt, dann
  • 15:38 - 15:41
    habt ihr meistens so einen
    Initialisierungsbefehl irgendwann
  • 15:41 - 15:48
    eingegeben ins Terminal und dann liegt vor
    euch eine riesen Ordnerstruktur. Diese
  • 15:48 - 15:50
    riesige Ordnerstruktur ist erst mal
    vielleicht ein bisschen überfordernd,
  • 15:50 - 15:53
    gerade wenn man von Content Management
    Systemen kommt und dann plötzlich damit
  • 15:53 - 15:57
    Dateien zu tun hat. Dann kann es einen ein
    bisschen erschlagen. Ich kann euch das
  • 15:57 - 16:02
    aber mal ein bisschen runterbrechen und
    vereinfachen. Wir haben hier im Prinzip
  • 16:02 - 16:06
    vier wichtige Bestandteile in jedem Static
    Site Generator. Die heißen meistens ein
  • 16:06 - 16:10
    bisschen unterschiedlich, sind aber
    relativ ähnlich zueinander. Wir haben
  • 16:10 - 16:15
    einmal die Inhalte und Daten. Das ist
    quasi das, wo entsprechend dann das Herz
  • 16:15 - 16:22
    eurer Seite besteht, so mit Blog-Posts,
    Seiten. Aber auch strukturierte oder semi-
  • 16:22 - 16:27
    strukturierte Daten könnt ihr entsprechend
    da einpflegen. Und ihr habt da zum
  • 16:27 - 16:32
    Beispiel so Formate vorliegen wie
    Markdown, YAML, JSON, TOML und so weiter.
  • 16:32 - 16:37
    Also verschiedene Formattypen. Dann habt
    ihr Templates und/oder Themes. Das sind
  • 16:37 - 16:41
    sozusagen die Blöcke eurer statischen
    Seite, die vorgeben, wie sie später
  • 16:41 - 16:45
    gerendert werden soll. Wenn euer Static
    Site Generator die Seite zusammenbaut,
  • 16:45 - 16:48
    dann nimmt er sich den Content, guckt, wo
    kommt das ins Template rein und baut das
  • 16:48 - 16:52
    alles entsprechend zusammen. Das heißt,
    dass auch eine gewisse Uniformität erzeugt
  • 16:52 - 16:55
    wird. Und diese Templates und Themes habt
    ihr im Prinzip an bestimmten Stellen in
  • 16:55 - 17:00
    diesem Static Site Generator liegen,
    schreibt sie dort und strukturiert und
  • 17:00 - 17:05
    teilt sie auch dort auf. Außerdem habt ihr
    Konfiguration. Das ist ganz klar. Alles
  • 17:05 - 17:07
    was ihr ins Netz stellt, muss auch
    irgendwo konfiguriert werden und
  • 17:07 - 17:11
    entsprechend mit Metadaten versehen
    werden. Das macht ihr meistens dort. In so
  • 17:11 - 17:14
    Konfigurationsdateien stellt ihr zum einen
    meistens ein, wie so'n Static Site
  • 17:14 - 17:18
    Generator arbeiten soll aber auch zum
    Beispiel Metadaten, euer Seitenname, eine
  • 17:18 - 17:23
    Beschreibung für SEO oder so kommt dann
    meistens auch mit rein und Plugins oder
  • 17:23 - 17:27
    ähnliches werden dann meistens auch mit
    rein konfiguriert, wenn euer Static Site
  • 17:27 - 17:32
    Generator das überhaupt unterstützt. Jetzt
    habt ihr ganz viel Struktur und Text. Eine
  • 17:32 - 17:37
    Sache fehlt natürlich noch: Die statischen
    Assets, wie zum Beispiel Styles, Fonts,
  • 17:37 - 17:42
    Bilder und Skripte. Also alles das, was
    sozusagen dafür sorgt, dass das Ganze auf
  • 17:42 - 17:47
    einem Bildschirm ein bisschen mehr Form
    und Farbe annimmt und auch ein bisschen
  • 17:47 - 17:52
    mehr Dynamik. Das ist quasi auch noch eine
    Sache, die dort mit drinsteckt. Ich habe
  • 17:52 - 17:56
    von einem Beispiel gesprochen. Wir haben
    ja die Darmstadt CCC Seite auf Hugo
  • 17:56 - 18:01
    umgebaut. Ist aktuell noch nicht deployed,
    aber hier seht ihr schon mal ein bisschen
  • 18:01 - 18:05
    als Beispiel die Ordnerstruktur von Hugo.
    Wenn ihr so'n hugo new site-Befehl
  • 18:05 - 18:08
    ausführt, dann habt ihr die
    Konfigurationsdatei ganz oben. Das ist die
  • 18:08 - 18:14
    config.toml. Da definiert wie gesagt die
    entsprechenden Werte für die Seite schon
  • 18:14 - 18:18
    drin. Dann habt ihr content. Das ist das
    für semi- und unstrukturierten Inhalt der
  • 18:18 - 18:22
    Seite, zum Beispiel Blogposts. Also semi-
    und unstrukturiert heißt im Prinzip
  • 18:22 - 18:25
    Markdown und Text einfach so als
    unstrukturiert und semistrukturiert
  • 18:25 - 18:29
    könntet ihr auch zum Beispiel HTML-Seiten
    und so drin schreiben, wenn ihr das
  • 18:29 - 18:33
    entsprechend braucht. Wenn ihr zum
    Beispiel irgendwelche Datenbanken habt,
  • 18:33 - 18:36
    Listen oder ähnliches, die sich relativ
    ähnlich sehen, habt ihr zum Beispiel den
  • 18:36 - 18:41
    data-Ordner. Da kommen dann, so YAML-,
    TOML- und JSON-Dateien rein, die wirklich
  • 18:41 - 18:44
    einfach formatierte, strukturierte Inhalte
    haben, die ihr zum Beispiel auch als
  • 18:44 - 18:49
    Listen in den Templates rendern könnt.
    Statische Assets ist relativ schnell
  • 18:49 - 18:56
    erklärt, kommen in static rein. Themes
    sind komplette Pakete, die ein bestimmtes
  • 18:56 - 19:02
    Thema enthalten, inklusive Layout und
    Styles und Ähnlichem. Und unten habt ihr
  • 19:02 - 19:06
    Layouts. Layouts sind ein bisschen
    spezifischer als Themes. Darauf komme ich
  • 19:06 - 19:11
    auch gleich noch mal zu sprechen. Das ist
    im Prinzip der Teil, wo ihr bestimmt, wie
  • 19:11 - 19:15
    spezifische Inhalte auf eurer Seite auch
    unabhängig vom Theme gerendert werden
  • 19:15 - 19:19
    sollen. Das klingt ein bisschen
    verwirrend. Ich erkläre euch aber gleich
  • 19:19 - 19:23
    mal, wo da der Unterschied genau besteht.
  • 19:23 - 19:26
    Inhalte. Wenn ihr anfangt, so eine
  • 19:26 - 19:29
    statische Seite zu bauen, dann ist das
    erste, was euch in den Sinn kommt,
  • 19:29 - 19:32
    natürlich, dass ihr irgendwo Inhalte
    reinpacken wollt. Und wie gesagt, kommt
  • 19:32 - 19:38
    das bei Hugo zum Beispiel in diesem
    Content Directory. Und dort habt ihr hier
  • 19:38 - 19:42
    zum Beispiel wie auf der linken Seite zu
    sehen verschiedene Markdown Dateien bei
  • 19:42 - 19:47
    darmstadt.ccc.de zum Beispiel. Wir haben
    das Impressum und so, einen Ordner mit
  • 19:47 - 19:51
    Posts, mit Blogposts und dort strukturiert
    ihr euch den ganzen Inhalt rein. In diesem
  • 19:51 - 19:56
    Fall kommen die Inhalte bei uns halt aus
    Dateien und sie sind halt strukturiert
  • 19:56 - 20:00
    oder semistrukturiert und ihr habt
    verschiedene Formatmöglichkeiten, die ihr
  • 20:00 - 20:03
    wählen könnt. Das heißt, wenn ihr nicht
    Markdown schreiben wollt, könnt ihr auch
  • 20:03 - 20:08
    HTML schreiben oder eine andere Form von
    Markup Sprache, die euch vielleicht ein
  • 20:08 - 20:15
    bisschen gelegener ist. Wenn ihr mal so
    eine Markdown Datei aufmacht, dann fällt
  • 20:15 - 20:20
    euch auf, dass da nicht nur Markdown
    drinsteht, wie hier zum Beispiel ab Zeile
  • 20:20 - 20:25
    10, wo es hier um Freifunk geht, sondern
    da gibt es auch was oben drüber. Das ist
  • 20:25 - 20:30
    bei Static Site Generators relativ häufig
    so. Ihr habt nämlich hier entsprechend ein
  • 20:30 - 20:34
    paar Metadaten oder wie es bei Static Site
    Generators häufig genannt wird, front
  • 20:34 - 20:39
    matter. Dieses front matter sorgt dafür,
    dass Static Site Generator weiß, worum es
  • 20:39 - 20:42
    eigentlich in dem Inhalt überhaupt geht
    und vor allen Dingen auch, wo er genau hin
  • 20:42 - 20:47
    soll. In diesem Fall haben wir hier zum
    Beispiel ein Layout, was festgelegt wird,
  • 20:47 - 20:51
    ist hier das page Layout. Wir haben den
    Titel der Seite. Das ist zum Beispiel, wie
  • 20:51 - 20:54
    gesagt, es geht hier um Freifunk, Freifunk
    und was hier unten ganz cool ist, das ist
  • 20:54 - 20:57
    ein bisschen spezifischer für den Static
    Site Generator: Wir legen hier eine
  • 20:57 - 21:01
    Menüposition fest für den entsprechenden
    Inhalt. Das heißt, ihr geht nicht
  • 21:01 - 21:05
    irgendwie, wie im Wordpress, zur Seite,
    schreibt die, geht ins Menü und zieht das
  • 21:05 - 21:09
    dann ins Menü rein, sondern ihr schreibt
    direkt in den Inhalt rein. So, hier, pack
  • 21:09 - 21:12
    das mal bitte da hin und das macht ihr
    alles schön von einem Ort raus und der
  • 21:12 - 21:17
    Static Site Generator übernimmt dann den
    Rest. Die letzte Variable ist etwas, was
  • 21:17 - 21:22
    zum Beispiel auch templatespezifisch oder
    themespezifisch ist. Wird bei uns zum
  • 21:22 - 21:26
    Beispiel verwendet. Hier für das
    entsprechende Bild in der jeweiligen Seite
  • 21:26 - 21:31
    ist hier die Hero-Variable. Die gibt es so
    im Static Site Generator eigentlich nicht,
  • 21:31 - 21:34
    wurde von mir sozusagen hinzugefügt. Und
    genau sowas könnt ihr auch machen, wenn
  • 21:34 - 21:40
    ihr zum Beispiel spezielle Bedürfnisse für
    Variablen in euren Templates habt. Wenn
  • 21:40 - 21:46
    ihr irgendwie mit Markdown und so nicht
    klarkommt, habt ihr auch andere Optionen,
  • 21:46 - 21:49
    z. B. CSV, JSON, YAML und TOML, ich habe
    es eben schon gesagt, strukturierte
  • 21:49 - 21:52
    Inhalte. Das ist zum Beispiel gut für
    große Datensätze. Wenn ihr zum Beispiel
  • 21:52 - 21:57
    ein Team in einer Firma habt, dann wollt
    ihr das vielleicht nicht alles so in HTML
  • 21:57 - 22:01
    manuell runter hacken und euch irgendwann
    denken, ja, doof, und irgendwo habt ihr
  • 22:01 - 22:04
    vielleicht mal einen Formatierungsfehler
    drin, dann sieht alles aus wie Grütze. Und
  • 22:04 - 22:07
    das macht dann eigentlich auch im Prinzip
    keinen Spaß, weil da macht ihr dann im
  • 22:07 - 22:10
    Prinzip das Layouting über die Templates
    und müsst euch da keine Sorgen machen. Ihr
  • 22:10 - 22:13
    schreibt einmal das Layout und ein Static
    Site Generator macht dann halt keine
  • 22:13 - 22:18
    Fehler und bindet euch eure coole
    Datenbank schön in die Seite rein und dann
  • 22:18 - 22:22
    ist die da vernünftig zu sehen. Außerdem
    vermeidet das wie gesagt Inkonsistenz.
  • 22:22 - 22:27
    Wenn ihr jetzt zum Beispiel, worauf ich
    auch später noch mal zu sprechen komme,
  • 22:27 - 22:31
    ein Content Management System habt oder
    ähnliches, wo ihr Daten rausziehen wollt
  • 22:31 - 22:35
    oder eine andere Applikation, dann geht
    das bei den meisten Static Site Generators
  • 22:35 - 22:39
    auch. Dann geht ihr, sucht euch ne
    entsprechende API raus. REST ist da
  • 22:39 - 22:43
    eigentlich der Standard. Viele können auch
    einen neueren Standard, der sich GraphQL
  • 22:43 - 22:48
    nennt, wo ihr festlegen könnt, was genau
    ihr an Inhalten überhaupt abgerufen haben
  • 22:48 - 22:53
    wollt. Und diese Daten werden dann zur
    Renderingzeit quasi von der API abgerufen
  • 22:53 - 22:59
    und in eure statische Seite integriert.
    Genau, in jedem Content Management System,
  • 22:59 - 23:01
    normalen Content Management
    System, gibt es auch, zum Beispiel headless
  • 23:01 - 23:05
    CMS, da komme ich auch noch mal gleich
    darauf zurück und auch da geht das
  • 23:05 - 23:08
    Layouting dann wieder über das Template.
    Das heißt, ihr zieht euch nur die ganzen
  • 23:08 - 23:12
    Daten raus und packt sie in dieses
    Template rein und vermeidet auch da
  • 23:12 - 23:18
    entsprechende Inkonsistenzen. Jetzt habe
    ich viel über Thema Themes und Templates
  • 23:18 - 23:24
    geredet. An dieser Stelle sollte ich
    vielleicht mal ganz kurz erzählen, was das
  • 23:24 - 23:28
    überhaupt ist und wie sich das voneinander
    unterscheidet, weil das klingt ja schon
  • 23:28 - 23:33
    relativ ähnlich. So ein Theme ist, wie
    gesagt, so ein Gesamtpaket. Wenn ihr jetzt
  • 23:33 - 23:37
    kein eigenes Theme in Hugo schreibt, dann
    ladet ihr euch das irgendwo runter, bei
  • 23:37 - 23:42
    GitHub zum Beispiel oder so und da ist
    dann alles drin, da sind Templates drin,
  • 23:42 - 23:48
    da sind entsprechend Styles drin, Skripte
    und so weiter, Fonts. Das heißt, ihr
  • 23:48 - 23:51
    installiert das einmal, startet im Prinzip
    einen Static Site Generator und seid
  • 23:51 - 23:55
    gewaschen, gekämmt und die Seite sieht
    schön aus. So ein Theme stellt das
  • 23:55 - 23:59
    Grundgerüst der Seite entsprechend und
    auch die meisten Basistemplates. Das heißt
  • 23:59 - 24:03
    hier, wie ihr das zum Beispiel links seht,
    haben wir hier so ein Basistemplate mal
  • 24:03 - 24:07
    grafisch abgebildet. Wir haben hier eine
    Kopfzeile, einen Hauptbereich und einen
  • 24:07 - 24:11
    Footer und so beginnen meistens die
    Templates auch in Hugo. Das ihr ein
  • 24:11 - 24:16
    base-of Template habt. Und ab da werden
    sozusagen die Layouts ineinander immer
  • 24:16 - 24:22
    weiter verschachtelt und so setzt sich
    dann eure Seite zusammen. Eine typische
  • 24:22 - 24:26
    Aufteilung, habe ich wie gesagt schon
    erwähnt, besteht ja meist aus diesen drei
  • 24:26 - 24:30
    Blöcken. Ihr habt ein Headertemplate, wo
    eure ganzen Metadaten das CSS, das
  • 24:30 - 24:35
    JavaScript und so reinkommt. Ihr habt den
    Main-Bereich, wo euer Inhalt dann meistens
  • 24:35 - 24:38
    reinkommt, wo auch entsprechend die
    einzelnen Inhaltstemplates meistens
  • 24:38 - 24:43
    eingefügt werden. Und ein vierter Bereich
    wo euer ganzer JavaScript-Kram und so
  • 24:43 - 24:47
    reinkommt, wo ihr vielleicht eure
    Copyright Notice reinpackt und so. Das ist
  • 24:47 - 24:50
    meistens die Grundstruktur und dort kann
    es halt auch sein, dass die Templates sich
  • 24:50 - 24:55
    dann noch weiter verschachteln. Was ist
    denn so ein mysteriöses Template
  • 24:55 - 24:59
    überhaupt? So ein Template ist im Prinzip,
    es sieht, wenn ihr das jetzt mal auf der
  • 24:59 - 25:04
    linken Seite seht, fast aus wie eine HTML-
    Seite. Das ist es aber nicht ganz. Es ist
  • 25:04 - 25:08
    im Prinzip, wie schon der Name verrät,
    eine Vorlage. Und diese Vorlage sagen dem
  • 25:08 - 25:12
    Static Site Generator, was er mit eurem
    Content machen soll. Hier zum Beispiel
  • 25:12 - 25:19
    habe ich mal so schematisch auf der linken
    Seite ein bisschen skizziert, wie das
  • 25:19 - 25:23
    aussehen könnte. Wenn ihr zum Beispiel ein
    Blogpost rendern wollt, ihr extended hier
  • 25:23 - 25:27
    meinetwegen euer Basis Template. Extend
    heißt im Prinzip, ihr sagt eurem Static
  • 25:27 - 25:31
    Site Generator: Wenn du den Blogpost
    renderst, dann nutz als Basis bitte das
  • 25:31 - 25:36
    Template 42, also pack den Rest ins
    Template 42, damit Template 42 den ganzen
  • 25:36 - 25:43
    Rest der Seite enthält. Und ich habe zum
    Beispiel die article Tags wurden über
  • 25:43 - 25:46
    einen Artikel und so entsprechend
    eingefügt, das ist jetzt ganz normales
  • 25:46 - 25:49
    HTML, ist nicht so wichtig und ihr habt
    hier zwei Variablen, zum Beispiel
  • 25:49 - 25:56
    Titelvariable hier in Header 1 und unten
    in dem Div Element mit "rC3-is-awesome"
  • 25:56 - 26:00
    eure Inhaltsvariable, d.h. da wird der
    Content vom Blogpost entsprechend rein
  • 26:00 - 26:05
    gerendert. Und ihr könnt dort nicht nur
    meistens Textvariablen einbinden, sondern
  • 26:05 - 26:10
    dort werden auch eure Assets und Ähnliches
    eingebunden. Das heißt, alles wie sich die
  • 26:10 - 26:15
    Seite am Ende zusammensetzt, regelt ihr in
    der Regel über die Templates. Ich habe
  • 26:15 - 26:20
    euch da mal so ein Beispiel mitgebracht.
    Ihr seht das hier ganz gut oben. Das ist
  • 26:20 - 26:24
    ein Auszug aus einer Single HTML in Hugo.
    Das sieht ähnlich aus wie mein
  • 26:24 - 26:28
    schematisches Beispiel eben. Ihr extended
    hier das Template "main", habt dann hier
  • 26:28 - 26:33
    Titelvariable, zum Beispiel im Header 1
    und hier die Contentvariable in main. Und
  • 26:33 - 26:36
    was Hugo da macht, es ersetzt hier den
    Titel halt durch den Titel eures
  • 26:36 - 26:40
    Blogposts, den Content durch den Inhalt
    und packt das Ganze in euer Main Template,
  • 26:40 - 26:46
    also in das Restgerüst eurer Seite. Ich
    habe auch gesagt, Hugo fängt meistens mit
  • 26:46 - 26:51
    so einem Bassistemplate an, das seht ihr
    hier unten. Wenn ihr schon HTML
  • 26:51 - 26:53
    geschrieben habt, kommt euch das
    vielleicht bekannt vor. Das ist so ein
  • 26:53 - 26:57
    klassisches Grundgerüst und ihr seht auch
    schon, hier fängt es z.B. an, dass wir die
  • 26:57 - 27:01
    lang, also die language der Seite hier
    schon mit einer Variable festlegen, die
  • 27:01 - 27:06
    zum Beispiel in diesem Fall bei Hugo
    global ist. Wir fügen hier schon direkt
  • 27:06 - 27:11
    ein Template ein, das ist das head
    Template, also das, was im HTML dieses
  • 27:11 - 27:14
    head-Element ist, das kommt da mit rein
    und der Rest kommt hier in den Body rein.
  • 27:14 - 27:17
    Ist auch nicht so wichtig. Ihr müsst noch
    nicht alles verstehen. Nur im Prinzip
  • 27:17 - 27:20
    müsst ihr euch vorstellen, alles was in
    diesen geschweiften Doppelklammern drin
  • 27:20 - 27:25
    ist, sind quasi Bausteine, die der Static
    Site Generator zur Bauzeit quasi einzeln
  • 27:25 - 27:30
    in die Seite rein setzt und daraus
    entsteht dann das Gesamtkonstrukt. Ich
  • 27:30 - 27:34
    habe von der head.html gesprochen, so
    sieht die ja auch im Prinzip aus bzw. ein
  • 27:34 - 27:37
    Auszug davon. Ich habe das eingefügt, weil
    ich euch zwei Dinge mal zeigen wollte,
  • 27:37 - 27:41
    nämlich könnt ihr auch ein bisschen
    advancederes Zeug damit machen. Ihr könnt
  • 27:41 - 27:44
    z.B. Conditionals auch schreiben. Meistens
    haben diese Static Site Generators eine
  • 27:44 - 27:49
    Template Language an Bord, die euch viel
    Dynamik erlaubt und entsprechend euch auch
  • 27:49 - 27:54
    die Möglichkeit bietet, auf viele Sachen
    sehr dynamisch zu reagieren. Zum Beispiel
  • 27:54 - 27:57
    sagen wir hier, wenn die Seite nicht die
    Homeseite ist, dann hängt bitte den
  • 27:57 - 28:03
    Seitentitel hinten dran. Oder wir fügen
    die Description der Seite entsprechend ein
  • 28:03 - 28:06
    und hier unten, was ganz cool ist. Ich
    habe schon gesagt, so ein Template bietet
  • 28:06 - 28:10
    euch ein bisschen mehr Möglichkeit, als
    nur Textvariablen einzubinden. Ihr habt
  • 28:10 - 28:14
    hier unten die Möglichkeit, zum Beispiel
    Ressourcen zu laden. Zum Beispiel haben
  • 28:14 - 28:20
    wir eine SASS-File, eine SCSS-File, das
    ist ein Superset von CSS, was sozusagen
  • 28:20 - 28:23
    kompiliert werden muss, damit es dann
    eingefügt werden kann. Und das macht unser
  • 28:23 - 28:27
    Static Site Generator hier mit diesen
    Befehlen automatisch mit toCSS macht es
  • 28:27 - 28:32
    das quasi zu CSS und macht es dann auch
    gleich minifiziert und fingerprinted das.
  • 28:32 - 28:35
    Fingerprinting heißt, einfach für alle die
    das nicht kennen, dass man quasi so eine
  • 28:35 - 28:39
    Prüfsumme generiert. Und dann, wenn wir
    das alles hier einmal gemacht haben, durch
  • 28:39 - 28:44
    so eine Pipeline durchlaufen lassen haben,
    können wir es hier direkt einfügen und
  • 28:44 - 28:48
    haben quasi einen relativ coolen Style-
    Tag. der auch relativ viel Sicherheit und
  • 28:48 - 28:52
    Absicherung, bietet, dass irgendwas schief
    laufen kann. Und das alles macht ihr hier
  • 28:52 - 28:56
    im Template und das ist halt in vielen
    Content Management System deutlich
  • 28:56 - 29:01
    komplizierter und oft auch manchmal nur
    mit Plugins zu lösen. Kurz umrissen, damit
  • 29:01 - 29:04
    ich es nicht ausgelassen habe. Ich habe
    das meiste ja eigentlich schon erzählt.
  • 29:04 - 29:08
    Statische Assets kommen in den eigenen
    Ordner und neben diesen ganzen CSS- und
  • 29:08 - 29:11
    JavaScript-Kram sind es Bilder und
    Schriftarten, die da auch gerne
  • 29:11 - 29:17
    auftauchen. Die könnt ihr meistens dann
    über absolute Pfade in eure Seite
  • 29:17 - 29:21
    einbinden und die meisten Static Site
    Generators bieten euch auch Preprocessing.
  • 29:21 - 29:26
    Ich habe es hier mit CSS gezeigt. Es geht
    auch mit Bildern und macht auch meistens
  • 29:26 - 29:28
    mit Bildern viel Sinn. Das heißt, ihr
    müsst nicht irgendwie euer
  • 29:28 - 29:32
    Bilderminifizierungs-Tool aufrufen und da
    eure Bilder einzeln reinschieben, sondern
  • 29:32 - 29:35
    ihr schiebt eure Bilder einfach cool in
    den Content-Ordner rein, sagt dem Static
  • 29:35 - 29:40
    Site Generator einmal bau das bitte. Und
    dann fallen am Ende für das Web optimierte
  • 29:40 - 29:45
    Bilder raus, die entsprechend schon eine
    angenehme Größe haben. Wenn ihr jetzt
  • 29:45 - 29:49
    diesen ganzen Prozess einmal durchlaufen
    habt, ihr euch sicher seid okay, jetzt
  • 29:49 - 29:52
    möchte ich das schon mal online stellen,
    dann kommt ihr irgendwann an den Punkt, wo
  • 29:52 - 29:57
    ihr das auf den Server hochladen wollt. Es
    ist im Gegensatz zu Content Management
  • 29:57 - 30:02
    Systemen hier super simpel und relativ
    easy, weil ihr müsst einfach nur ein paar
  • 30:02 - 30:05
    Dateien hochladen. Ihr sagt einem Static
    Site Generator meistens, dass er das
  • 30:05 - 30:09
    irgendwie bauen soll mit einem Build-
    Command. Und wenn ich diesen Build-Command
  • 30:09 - 30:14
    ausgeführt habt, dann kommt da ein Haufen
    statischer Dateien raus. Die schiebt ihr
  • 30:14 - 30:16
    dann meistens in ein sogenanntes Content
    Delivery Network oder auf einen
  • 30:16 - 30:21
    statischen, also auf einen normalen
    Webserver. Das ist beides das gleiche,
  • 30:21 - 30:24
    außer dass ein Content Delivery Network
    halt, meistens auf viele Nodes verteilt
  • 30:24 - 30:30
    sind. Stichwort Skalierung. Und die Last
    ist halt gering, weil es auch keine
  • 30:30 - 30:33
    Runtime gibt. Das heißt egal wo ihr das
    hinschiebt, die Webserver haben damit
  • 30:33 - 30:38
    meistens nichts zu tun, weil die müssen im
    Prinzip einfach nur die Seite auf die User
  • 30:38 - 30:42
    werfen, wenn die Seite aufgerufen wird.
    Das ist halt ein super einfacher Prozess.
  • 30:42 - 30:45
    Viele Anbieter von so Content Delivery
    Networks haben auch die Möglichkeit, eine
  • 30:45 - 30:49
    sogenannte Continuous Integration und
    Continuous Delivery anzubieten. Das heißt,
  • 30:49 - 30:52
    da müsst ihr euch nicht mal ums Bauen
    kümmern, da verknüpft ihr einfach das Git-
  • 30:52 - 30:56
    Repository und dann, wenn ihr was pusht,
    dann kommt es automatisch sozusagen zum
  • 30:56 - 31:00
    Anbieter, wird zusammengebaut und deployt.
    Das heißt es ist für euch super einfach,
  • 31:00 - 31:04
    ihr macht eine Änderung, pusht die einfach
    und dann wird der Rest vom entsprechenden
  • 31:04 - 31:07
    Anbieter übernommen. Oder ihr baut euch
    selbst eine CI oder eine Continuous
  • 31:07 - 31:11
    Delivery. Das geht natürlich auch. Das
    wird dann entsprechend über Webhooks
  • 31:11 - 31:18
    getriggert. Kommen wir noch kurz zum
    Vergleich. Es ist schon ein bisschen her,
  • 31:18 - 31:21
    aber ihr erinnert euch vielleicht noch an
    den Anfang. Ich habe so ein paar Punkte
  • 31:21 - 31:25
    gemacht und die möchte ich mal ein
    bisschen dem Static Site Generator
  • 31:25 - 31:30
    gegenüberstellen. Zum ersten waren es
    Sicherheitsupdates. Ihr habt natürlich
  • 31:30 - 31:33
    hier kein Zugriff aufs Backend. Das heißt,
    es wird natürlich erst mal schwierig, das
  • 31:33 - 31:36
    Content Management System, was hier
    entsprechend nicht vorhanden ist,
  • 31:36 - 31:40
    natürlich anzugreifen. Das heißt, ihr
    müsstet euch an den Webserver oder
  • 31:40 - 31:43
    ähnliches machen, um überhaupt Zugriff zu
    bekommen. Und wenn die Seite einmal online
  • 31:43 - 31:47
    ist, dann braucht die auch erst mal keine
    Sicherheitsupdates. Außer vielleicht, wenn
  • 31:47 - 31:51
    mal Frontend-Updates, wenn irgendwelche
    bestimmten Standards auslaufen. Wenn ihr
  • 31:51 - 31:54
    eure Seite mit HTML 1.0 geschrieben habt,
    dann wird die vielleicht irgendwann nicht
  • 31:54 - 31:59
    mehr dargestellt oder wenn ihr die für den
    Internet Explorer optimiert habt. Das
  • 31:59 - 32:03
    Backend benötigt natürlich Wartung, auch
    die Hosting Hardware und Software benötigt
  • 32:03 - 32:05
    Wartung. Das ist natürlich
    selbstverständlich, aber es ist halt schon
  • 32:05 - 32:10
    deutlich geringerer Aufwand. Die Features
    können überhaupt nicht wirklich kaputt
  • 32:10 - 32:13
    gehen, weil die Inhalte meistens über
    Standards kommen, das heißt HTML ist
  • 32:13 - 32:17
    standardisiert, CSS ist standardisiert und
    auch JavaScript ist standardisiert. Das
  • 32:17 - 32:20
    veraltet irgendwann, aber bis das
    veraltet, habt ihr wahrscheinlich eure
  • 32:20 - 32:25
    Seite schon mal umgebaut und die
    Portierung auf ein anderes System oder
  • 32:25 - 32:28
    auch von einem entsprechenden Content
    Management System ist halt super einfach
  • 32:28 - 32:32
    weil diese Standards halt existieren. Die
    Plugin-Hölle, die gibt es eigentlich so
  • 32:32 - 32:40
    nicht mehr wirklich. Es gibt Static Site
    Generators, die halt entsprechend Plugins
  • 32:40 - 32:44
    euch bieten, aber die machen euch erst mal
    keine Probleme, wenn die outdated sind und
  • 32:44 - 32:49
    ihr habt relativ viel Zeit auch
    entsprechend dort eine eigene Lösung zu
  • 32:49 - 32:53
    implementieren oder auf eine andere Lösung
    zu wechseln, weil diese Plugins halt nicht
  • 32:53 - 32:56
    irgendwo online liegen, sondern die sind
    halt bei euch lokal und bauen nur die
  • 32:56 - 33:00
    Seite. Und wenn da mal was kaputt geht
    oder outdated ist, dann ist das nicht
  • 33:00 - 33:04
    direkt für Nutzer sichtbar. Genau. Ich
    habe eben schon kurz von Skalierung
  • 33:04 - 33:07
    gesprochen. Das ist halt bei Static Sites
    super einfach, natürlich auch nicht
  • 33:07 - 33:13
    unendlich erweiterbar. Wenn so ein
    Webserver irgendwie eine riesen
  • 33:13 - 33:16
    Menschenmasse abkriegt, dann geht der
    irgendwann auch mal in die Knie. Aber dass
  • 33:16 - 33:20
    das passiert ist halt wesentlich später.
    Auch cool ist halt, dass ihr im Content
  • 33:20 - 33:24
    Delivery Network die Seite verteilen könnt
    auf verschiedene Nodes und euch so
  • 33:24 - 33:30
    entsprechend ein bisschen
    Skalierungsaufwand ersparen könnt. Das
  • 33:30 - 33:33
    Ausrollen ist außerdem sehr einfach. Das
    heißt, wenn ihr eine Änderung haben wollt,
  • 33:33 - 33:36
    dann müsst ihr nicht anfangen, irgendwie
    Datenbanken zu migrieren, die PHP-Version
  • 33:36 - 33:40
    zu updaten, irgendwelche Plugins zu
    enabeln, sondern ihr schiebt einfach die
  • 33:40 - 33:44
    Dateien auf den Server und es läuft. Eine
    Datenbank gibt es natürlich in diesem Fall
  • 33:44 - 33:47
    dann auch entsprechend nicht. Die muss
    nicht mit skalieren. Das einzige was es
  • 33:47 - 33:50
    geben kann, ich habe es vorhin gesagt,
    wenn ihr z.B. eine API verwendet und ihr
  • 33:50 - 33:54
    wollt zum Beispiel auch die API nicht nur
    vom Static Site Generator direkt beim
  • 33:54 - 33:59
    Rendering aufrufen lassen. Dazu komme ich
    nämlich gleich, sondern auch über über
  • 33:59 - 34:04
    JavaScript z.B. wenn jemand die Seite
    aufruft, dann muss diese API entsprechend
  • 34:04 - 34:08
    auch mit Skalieren und auch entsprechend
    abgesichert sein. Aber das ist dann ein
  • 34:08 - 34:12
    Problem, mit dem man sich dann
    beschäftigen muss. Und es gibt auch da ein
  • 34:12 - 34:17
    paar Vorteile, weswegen man trotzdem einen
    Static Site Generator verwenden möchte.
  • 34:17 - 34:20
    Kommen wir jetzt mal noch ein bisschen zu
    advancteren Themen. Ich habe gerade eben
  • 34:20 - 34:24
    schon gesagt, wie ist das denn, wenn ihr
    eine API abrufen wollt? Wenn ihr zum
  • 34:24 - 34:29
    Beispiel eine statische Seite generiert,
    aber trotzdem vielleicht Änderungen
  • 34:29 - 34:32
    schnell sichtbar haben wollt? Weil das
    kann häufiger schon mal sein. Da gibt es
  • 34:32 - 34:38
    einen Prozess, der sozusagen sich darum
    kümmert, dass wenn ihr eine Seite aufruft,
  • 34:38 - 34:41
    dass sie dann entsprechend mit Inhalt
    gefüllt wird, dass sie sozusagen mit
  • 34:41 - 34:45
    JavaScript Wasser übergossen wird und dann
    anfängt, auf einmal neue Inhalte
  • 34:45 - 34:49
    nachzuladen. Dieser Prozess nennt sich
    Hydration. Da gibt es zwei verschiedene
  • 34:49 - 34:54
    Techniken, da gibt es einmal das partial
    hydration. Das heißt, bestimmte Inhalte
  • 34:54 - 34:59
    der Seite werden einfach nur sozusagen mit
    Dynamik versehen, mit JavaScript. Das
  • 34:59 - 35:02
    heißt, ihr seht es auch unten in der
    Grafik: Die Seite läd, dann wird die Seite
  • 35:02 - 35:05
    aufgerufen, dann hat die ein bisschen
    Inhalt, der ist hier halt noch orange und
  • 35:05 - 35:08
    dann kommt die Hydration in diesem
    orangenen Bereich und hängt sich da rein,
  • 35:08 - 35:11
    sozusagen mit JavaScript und lädt
    vielleicht Inhalte nach. Und auf einmal
  • 35:11 - 35:14
    sind da plötzlich drei Blogposts, weil
    vielleicht der Rendering Prozess noch
  • 35:14 - 35:18
    nicht hinterher gekommen ist, weil die den
    halt gerade just veröffentlicht ist. Oder
  • 35:18 - 35:23
    ihr habt eine ganz hitzige Kommentarspalte
    und viel zu rendern, das lohnt sich jetzt
  • 35:23 - 35:27
    einfach mal gerade nicht. Ihr könnt es
    auch mit lazy Hydration machen. Das hat
  • 35:27 - 35:32
    sogar noch den Vorteil, dass ihr
    entsprechende Inhalte nur hydrated, wenn
  • 35:32 - 35:35
    sie überhaupt in den Sichtbereich kommen.
    Das ist, wenn ihr viel Hydration nutzen
  • 35:35 - 35:39
    wollt, sinnvoll, weil ihr dann nicht
    anfangt, dem Client irgendwie mit ganz
  • 35:39 - 35:43
    viel JavaScript um die Ohren zu werfen.
    So, wir kommen auch langsam Richtung Ende,
  • 35:43 - 35:49
    keine Sorge. Wir haben hier noch die
    deferred Static Site Generation. Das ist
  • 35:49 - 35:55
    ein cooler Mittelweg, wenn ihr zum
    Beispiel sagen wollt: Okay, ich hätte gern
  • 35:55 - 35:58
    trotzdem noch den Server und ich hätte
    gerne schnelles Rendering und es soll
  • 35:58 - 36:02
    alles schnell bereitgestellt werden. Ist
    das hier ein cooler Weg. Ihr habt einen
  • 36:02 - 36:06
    Server im Hintergrund, der quasi wie ein
    CMS läuft. Hier ist es zum Beispiel unten
  • 36:06 - 36:09
    in der Grafik von Gatsby, und ich sehe,
    die Quelle ist abgeschnitten. Das sollte
  • 36:09 - 36:13
    vielleicht mal fixen danach ist auch egal.
    Ich habe jetzt gesagt von gatsby.org ist
  • 36:13 - 36:18
    das gerade und dieser Server, der läuft im
    Hintergrund und liefert die Seite aus. Und
  • 36:18 - 36:21
    jedes Mal, wenn diese Seite ausgeliefert
    wird und es gab eine Inhalts-Änderung,
  • 36:21 - 36:25
    dann wird ein Abbild automatisch
    generiert. Das wird im Cache abgelegt und
  • 36:25 - 36:28
    wenn die nächste Person kommt, kriegt die
    nur den Cache zurück geworfen. Das heißt
  • 36:28 - 36:33
    im Prinzip habt ihr immer ein Abbild, was
    sozusagen inkrementell mitgeneriert wird
  • 36:33 - 36:37
    und es fühlt sich an wie eine statische
    Seite, skaliert auch ähnlich. Aber ihr
  • 36:37 - 36:39
    habt eben immer noch die Dynamik des
    Servers hinten dran und könnt schnell auf
  • 36:39 - 36:44
    Änderungen reagieren. Wenn ihr sagt, okay,
    ich will mein Content Management System
  • 36:44 - 36:49
    nicht komplett aufgeben, dann gibt es auch
    so coole hybride Ansätze und auch Plugins
  • 36:49 - 36:52
    für viele Content Management Systeme. Seid
    gewarnt, ihr nehmt natürlich die vielen
  • 36:52 - 36:56
    Nachteile des Backend-Servers dann mit
    euch. Aber wenn ihr sagt, ihr wollt nur
  • 36:56 - 36:59
    skalieren und Sicherheitsupdates sind für
    euch kein Problem, ist das vielleicht für
  • 36:59 - 37:06
    euch ein Ansatz. Ihr habt auch dort die
    Möglichkeit, entsprechend dafür zu sorgen,
  • 37:06 - 37:12
    dass auch die Leute weiterhin die Seite
    pflegen können. Mir fällt auch auf, dass
  • 37:12 - 37:16
    da eine Slide irgendwie fehlt mit dem mit
    dem Workflowwechsel, deswegen baue ich das
  • 37:16 - 37:20
    hier schnell ein. Die Leute können halt
    weiterhin sozusagen über eure Seite
  • 37:20 - 37:24
    entsprechend den Content pflegen für eure
    Redakteure. Wenn ihr ein größeres Team
  • 37:24 - 37:29
    habt, ändert sich nichts. Und so habt ihr
    weiterhin alles im Griff und habt trotzdem
  • 37:29 - 37:33
    die Möglichkeit, die Dinge statisch zu
    skalieren und teilweise bieten auch die
  • 37:33 - 37:35
    Content Management Systeme die
    Möglichkeit, das in ein Content Delivery
  • 37:35 - 37:39
    Network zu schieben. Das heißt noch nicht
    mal euer Server hat eine wirkliche Last
  • 37:39 - 37:43
    und der Server, auf dem die Seite liegt,
    ist kein Angriffsvektor für euer Content
  • 37:43 - 37:47
    Management System. Kurz als Ergänzung,
    weil das vorhin gefehlt hat aus
  • 37:47 - 37:53
    irgendeinem Grund: Wenn ihr ein Content
    Management System habt, bietet es meistens
  • 37:53 - 37:58
    auch eine API um dort Inhalte abzurufen.
    Das heißt, wenn ihr entsprechend WordPress
  • 37:58 - 38:01
    oder ähnliches habt, hat es meistens eine
    Rest API und ihr könnt auch die natürlich
  • 38:01 - 38:06
    mit dem Static Site Generator anzapfen, um
    entsprechend Inhalte abzurufen und sie
  • 38:06 - 38:10
    dann rein zu generieren. Das heißt, es ist
    für euren Workflow eigentlich ganz cool,
  • 38:10 - 38:12
    weil ihr da nicht viel ändern müsst. Also
    für eure Redakteure oder ähnliches ändert
  • 38:12 - 38:15
    sich nichts, sondern es generiert sich
    einfach eine Seite hintendran mit und das
  • 38:15 - 38:20
    Editing Frontend bleibt quasi gleich. NEOS
    ist übrigens auch ein bekanntes Beispiel.
  • 38:20 - 38:25
    Ist ein bisschen anders. Das generiert
    komplett statische Seiten, ist aber auch
  • 38:25 - 38:28
    TYPO3 ähnlich. Das heißt für kleinere
    Installationen vielleicht nicht so ganz
  • 38:28 - 38:34
    geeignet. So, das war jetzt viel Inhalt.
    Kommen wir zum Fazit. Sind Static Site
  • 38:34 - 38:39
    Generators die Lösung für alles? Ist das
    irgendwie das, was man einfach die Magie,
  • 38:39 - 38:42
    die man über alles drüber gießen kann und
    dann funktioniert alles? Nein, das sind
  • 38:42 - 38:45
    sie eigentlich nicht. Ich will ja auch
    nicht Content Management Systeme
  • 38:45 - 38:49
    runtermachen, aber sie sind eine coole
    Möglichkeit, um euch hohe Flexibilität zu
  • 38:49 - 38:52
    bieten, um euch hohe Skalierbarkeit zu
    bieten und euch zum Beispiel auch die
  • 38:52 - 38:57
    Wartung zu nehmen. Wenn ihr sagt, ihr baut
    ein kleines Blog zum Beispiel, da habt ihr
  • 38:57 - 39:00
    ja keine große Instanz von WordPress,
    sondern ihr schreibt euer Blog, ihr postet
  • 39:00 - 39:04
    den Eintrag, dann geht er online und dann
    müsst ihr euch da keinen Kopf drum machen.
  • 39:04 - 39:09
    Der liegt irgendwo. Und wenn ihr
    Aufmerksamkeit mit eurem Inhalt generiert,
  • 39:09 - 39:15
    dann ist das für euch kein Problem, weil
    der Blog skaliert dann ordentlich mit. Und
  • 39:15 - 39:18
    ihr habt auch hohe
    Aufrufgeschwindigkeiten. Was ich übrigens
  • 39:18 - 39:21
    vorhin noch nicht erwähnt habe, was auch
    sehr cool ist, ist, dass ihr natürlich
  • 39:21 - 39:24
    sofort mit dem Inhalt da seid. Das heißt,
    ihr müsst es nicht dynamisch nach
  • 39:24 - 39:28
    generieren. Und wenn ihr zum Beispiel
    jemanden oder eine Suchmaschine habt, die
  • 39:28 - 39:31
    Inhalte in der Seite sucht, dann sind die
    Inhalte auch sofort da. Oder zum Beispiel
  • 39:31 - 39:35
    eine Person mit Screenreader. Dann hat sie
    auch sofort ein statisches Abbild der
  • 39:35 - 39:38
    Seite, wo nichts irgendwie noch komisch
    mit Magie nachgeneriert wird und die
  • 39:38 - 39:42
    Person kann die Seite auch sehr schnell
    und ordentlich durchsuchen. In diesem
  • 39:42 - 39:47
    Sinne vielen Dank fürs Zuschauen oder
    Zuhören oder wie auch immer und ich bin es
  • 39:47 - 39:50
    auf jeden Fall mal gespannt auf eure
    Fragen und hoffe, ich habe euch nicht
  • 39:50 - 39:54
    allzu sehr mit dem ganzen Inhalt
    erschlagen. Und ja, cool.
  • 39:54 - 40:00
    Herald: Ja, danke für diesen super
    Vortrag. Wenn ihr jetzt noch Fragen habt,
  • 40:00 - 40:06
    könnt ihr die gerne auf Twitter und
    Mastodon stellen unter dem Hashtag
  • 40:06 - 40:14
    #rC3cwtv, also rC3 Chaos West TV. Unser
    Signal Angel wird sie dann mir schicken,
  • 40:14 - 40:19
    damit ich sie stellen kann. Gleich am
    Anfang ist die Frage gestellt worden,
  • 40:19 - 40:24
    können auch Videos eingebettet werden?
    Vielleicht kann man noch darstellen, was
  • 40:24 - 40:29
    mit Static Sites geht und was nicht?
    Avocadoom: Du schneidest bei mir manchmal
  • 40:29 - 40:31
    mit dem Audio ein bisschen ab, aber ich
    glaube, ich habe das meiste von der Frage
  • 40:31 - 40:37
    tatsächlich verstanden. Die Videos können
    tatsächlich eingebettet werden. Ich glaube
  • 40:37 - 40:41
    Tooling, um Videos zu optimieren, gibt es
    meistens nicht. Aber natürlich habt ihr
  • 40:41 - 40:44
    die Möglichkeit, wie bei allen anderen
    statischen Assets auch, dass ihr einfach
  • 40:44 - 40:47
    die Videos auf dem Webserver mit
    hochladet. Meistens in diese Static
  • 40:47 - 40:52
    Directory sozusagen, wenn euch das lieb
    ist und sie da entsprechend einbettet und
  • 40:52 - 40:58
    dann dort sozusagen mit Video Elementen im
    HTML oder mit einem Video Player Library
  • 40:58 - 41:02
    in JavaScript entsprechend diese Dinge
    einbettet. Es gibt natürlich auch die
  • 41:02 - 41:05
    Möglichkeit, dass ihr anfangt irgendwie
    YouTube oder Vimeo oder was auch immer mit
  • 41:05 - 41:08
    der API anzuzapfen und so entsprechend
    Videos einbettet. Also da sind euch die
  • 41:08 - 41:13
    Möglichkeiten relativ offen. Ihr müsst nur
    ein bisschen darauf gefasst sein, dass
  • 41:13 - 41:17
    natürlich Videos eine hohe Last für den
    Webserver bieten. Das heißt, da fließen
  • 41:17 - 41:22
    relativ viele Daten, aber in der Regel ist
    es auch kein großes Problem.
  • 41:22 - 41:26
    Herald: Danke! Könntest du noch ein
    Beispiel bringen, was man nicht mit einer
  • 41:26 - 41:31
    statischen Seite realisieren kann.
    Avocadoom: Nicht mit einer statischen
  • 41:31 - 41:36
    Seite realisieren? Im Prinzip kann man
    sehr viel mit einer statischen Seite
  • 41:36 - 41:40
    realisieren. Was man natürlich nicht
    realisieren sollte oder könnte ist
  • 41:40 - 41:44
    natürlich, sind Seiten mit sehr viel
    dynamischen Inhalt, sage ich mal so. Also
  • 41:44 - 41:47
    wenn ihr zum Beispiel jetzt anfangt, ich
    habe es vorhin mit der hitzigen
  • 41:47 - 41:50
    Kommentarspalte gesagt, wenn ihr jetzt
    irgendwas habt, wo ihr viele Kommentare
  • 41:50 - 41:55
    drin habt und ihr wollt da nicht viel mit
    JavaScript oder so arbeiten, sondern das
  • 41:55 - 41:59
    relativ statisch lassen, dann werdet ihr
    schnell auf das Problem stoßen, dass
  • 41:59 - 42:02
    nicht, wenn jemand alle 10 Sekunden
    kommentiert, dass ihr dann anfangen könnt,
  • 42:02 - 42:07
    die Seite neu zu rendern, weil das queued
    dann ewig ab und irgendwann zieht eure
  • 42:07 - 42:10
    Seite nur noch so hinterher mit dem
    Rendering oder das Rendering wird dauernd
  • 42:10 - 42:14
    abgebrochen. Das heißt, wenn ihr sehr,
    sehr, sehr viele dynamische Inhalte habt,
  • 42:14 - 42:17
    dann könnte es tatsächlich irgendwann ein
    Problem werden, das zu realisieren. Aber
  • 42:17 - 42:20
    ansonsten kann man eigentlich relativ viel
    mit statischen Seiten realisieren.
  • 42:20 - 42:25
    Herald: Dann noch eine Frage zur
    Geschwindigkeit. Es kommt dann öfter vor,
  • 42:25 - 42:31
    dass man Kilobytes an Frameworkcode
    preloaden muss, bevor die Seite überhaupt
  • 42:31 - 42:35
    reagiert. Gibt es da Tipps, wie man die
    Ladezeit bei static sites gering hält?
  • 42:35 - 42:39
    Avocadoom: Da gibt es tatsächlich Tipps,
    also wenn man zum Beispiel mit einem
  • 42:39 - 42:42
    JavaScript Static Site Generator arbeitet,
    wie Gatsby oder so, gibt es dort die
  • 42:42 - 42:47
    Möglichkeiten, dass man, wenn man dort ein
    Framework wie React einbindet, das sie
  • 42:47 - 42:51
    sogenannte Tree shaking mit sich bringen.
    Das heißt im Prinzip, dass sie sozusagen
  • 42:51 - 42:55
    an dem Dependency-Baum, den man aufbaut,
    um es mal bildlich zu beschreiben,
  • 42:55 - 42:58
    schütteln, d.h. sie schütteln da so lange
    dran, bis nur noch das Notwendigste
  • 42:58 - 43:02
    dranhängt und werfen den Rest des
    Frameworkcodes weg. Das heißt, ihr habt am
  • 43:02 - 43:08
    Ende ein gebündeltes JavaScript, was quasi
    relativ minimal ist. Natürlich ist es
  • 43:08 - 43:11
    trotzdem immer noch ein bisschen
    Frameworkcode. Viele bieten auch
  • 43:11 - 43:15
    sogenanntes Code Splitting an, das heißt
    im Prinzip, dass ihr nur den für die Seite
  • 43:15 - 43:19
    notwendigen Code ladet. Und wenn ihr eine
    neue Seite ladet, dann ladet ihr den
  • 43:19 - 43:23
    restlichen notwendigen Code. Das kann man
    auch manuell machen. Ich habe es ja von
  • 43:23 - 43:28
    darmstadt.ccc.de genannt gehabt. Da haben
    wir es tatsächlich so gemacht, dass wir
  • 43:28 - 43:32
    den Kalender mit JavaScript realisiert
    haben, weil wir dort iCal parsen und das
  • 43:32 - 43:36
    ist auch relativ dynamisch. Und dort ist
    es tatsächlich so, dass wir diesen Code
  • 43:36 - 43:40
    nur laden, wenn die entsprechende Seite
    aufgerufen wird mit einer entsprechenden
  • 43:40 - 43:43
    Templatevariable, die dann sozusagen auf
    wahr gesetzt wird. Und dann wird dieses
  • 43:43 - 43:47
    JavaScript eingebunden. Das heißt im
    Prinzip die Dinge, die man dann da
  • 43:47 - 43:50
    mitnehmen kann, ist zum einen halt es
    manuell aufzuteilen, nicht einfach nur die
  • 43:50 - 43:55
    Binaries irgendwie aus den Release Renders
    oder aus den Release Builds quasi einfach
  • 43:55 - 43:58
    in den Header einzubinden, sondern Bundler
    zu verwenden, auch wenn es ein bisschen
  • 43:58 - 44:03
    schmerzhaft ist oder halt auch einfach das
    Ganze manuell aufzuteilen.
  • 44:03 - 44:07
    Herald: Danke! Dann noch eine Frage, was
    du von verschiedenen Frameworks...
  • 44:07 - 44:12
    Avocadoom: Du bist gerade super leise,
    kannst du gerade mal gucken ob du...
  • 44:12 - 44:15
    Herald: Geht es besser?
    Avocadoom: Ähh ja, naja, es geht.
  • 44:15 - 44:20
    Herald: Okay, was ist deine Meinung zu
    headless CMS für static site generator?
  • 44:20 - 44:25
    Avocadoom: Tatsächlich eine sehr gute.
    Headless CMS ist tatsächlich was, wo ich
  • 44:25 - 44:30
    auch in gewisser Weise die Zukunft sehe
    und viele etablierte CMS Lösungen arbeiten
  • 44:30 - 44:33
    natürlich auch auf diesen Punkt hin, dass
    sie zum headless CMS werden können oder
  • 44:33 - 44:38
    zumindest zum teilweise headless CMS. Wenn
    ihr nur 'ne static site habt, ist es
  • 44:38 - 44:42
    natürlich erst mal nur so die halbe Miete,
    aber da ist es halt auch schon ganz cool.
  • 44:42 - 44:46
    Aber was halt vor allem der Vorteil ist,
    wenn ihr anfangt, die Inhalte noch auf
  • 44:46 - 44:50
    weitere Endgeräte zu bringen. Das heißt
    zum Beispiel, wenn ihr jetzt eine
  • 44:50 - 44:53
    Newsseite seid und ihr baut euch jetzt
    eine mobile App, dann müsst ihr nicht noch
  • 44:53 - 44:57
    eine API dafür schreiben, sondern die API
    liegt halt einfach schon da. Und das
  • 44:57 - 45:02
    bietet euch natürlich viele Vorteile. Das
    heißt, wenn ihr verschiedene Zielgeräte
  • 45:02 - 45:05
    damit ansprechen wollt, habt ihr halt
    sofort eine API und die API ist halt auch
  • 45:05 - 45:09
    unsere einzige source of truth. Das heißt,
    die könnt ihr pflegen, da könnt ihr dafür
  • 45:09 - 45:13
    sorgen, dass sie ordentlich läuft und habt
    so die Möglichkeit halt auch das
  • 45:13 - 45:16
    entsprechend in andere Services mit
    einzubinden. Oder auch, weiß ich nicht,
  • 45:16 - 45:20
    ein Sprachassistentenskill, was weiß ich.
    Es läuft halt alles auf die selbe source
  • 45:20 - 45:24
    hinaus und ich finde das sehr gut. Das ist
    eine sehr gute Lösung. Auf jeden Fall.
  • 45:24 - 45:29
    Herald: Cool. Was ist deine Einschätzung
    zu Graph?
  • 45:29 - 45:32
    Avocadoom: Du bist wieder super leise,
    sorry.
  • 45:32 - 45:36
    Herald: Was ist deine Einschätzung zu
    Graph, du hast es ja vorher einmal kurz
  • 45:36 - 45:40
    erwähnt.
    Avocadoom: Meine Meinung zu, jetzt warst
  • 45:40 - 45:43
    du wieder laut noch mal..
    Herald: Was ist deine Einschätzung zu
  • 45:43 - 45:47
    Graph?
    Avocadoom: Zu Graph? Meine Einschätzung zu
  • 45:47 - 45:53
    Graph ist tatsächlich auch eine relativ
    gute. Graph arbeitet ja an sich nicht
  • 45:53 - 45:56
    unbedingt direkt mit static site
    generation, sondern cached das ganze, ja,
  • 45:56 - 46:01
    in so Blöcken quasi, also im Prinzip
    werden keine Seiten raus gerendert,
  • 46:01 - 46:06
    sondern die Seite speichert sich oder das
    CMS speichert sich quasi so Blöcke der
  • 46:06 - 46:10
    Seite ab und fügt die am Ende nochmal kurz
    mit PHP zusammen. Es gibt aber auch die
  • 46:10 - 46:14
    Möglichkeit, das statisch zu machen, aber
    so oder so ist es ganz sinnvoll. Graph
  • 46:14 - 46:17
    legt damit ja so ein bisschen so eine
    Mitte, weil es ja aus diesem Bereich der
  • 46:17 - 46:20
    flat file Content Management Systeme
    bekommt. Das heißt, für alle, die das
  • 46:20 - 46:24
    nicht kennen. Das sind Content Management
    Systeme, die über das Dateisystem arbeiten
  • 46:24 - 46:28
    und nicht über eine Datenbank. Und ja, es
    ist auf jeden Fall ein cooler Mittelweg.
  • 46:28 - 46:33
    Es ist halt trotzdem ein System, was
    Sicherheitsrisiken bieten kann und wo man
  • 46:33 - 46:36
    natürlich immer ein Backend mit schleppt.
    Aber es bietet halt auch hohe Flexibilität
  • 46:36 - 46:40
    und Performance halt gerade dadurch, weil
    es mit diesem Cachingmechanismus arbeitet
  • 46:40 - 46:45
    oder über ein Plugin sogar mit static site
    rendering. Und ja, es ist auch eine sehr
  • 46:45 - 46:48
    positive Meinung, die ich dazu habe und es
    auf jeden Fall ein cooler Einstieg, wenn
  • 46:48 - 46:52
    man mal so ein bisschen in diese Richtung
    gehen will von: Wie sieht das alles aus,
  • 46:52 - 46:57
    wenn ich was sozusagen einfach statisch
    mache und nicht so krass hoch dynamisch
  • 46:57 - 47:00
    und vor allem wenn ich mal eine große
    Datenbank wegwerfen will.
  • 47:00 - 47:05
    Herald: Die nächste Frage wär: Ist aus
    deiner Sicht PHP noch zeitgemäß?
  • 47:05 - 47:11
    Avocadoom: Ja, PHP ist zeitgemäß.
    Tatsächlich weiß ich, dass viele PHP total
  • 47:11 - 47:17
    abhaten, aber ich finde der PHP-Entwickler
    oder der PHP-Schöpfer, ich weiß seinen
  • 47:17 - 47:21
    Namen gerade nicht. Ich habe mal einen
    Talk von dem gesehen, vor einem Jahr
  • 47:21 - 47:24
    glaube ich ungefähr. Und er gibt sich halt
    große Mühe bzw. sein Team gibt sich große
  • 47:24 - 47:30
    Mühe, dass die Sprache immer moderner
    wird, immer aktueller. Klar ist es nicht
  • 47:30 - 47:35
    die schönste Sprache, mit Sicherheit, aber
    PHP ist halt immer noch in seiner
  • 47:35 - 47:41
    Möglichkeit, dass man es einfach relativ
    easy in HTML z.B. einbauen kann oder
  • 47:41 - 47:45
    dadurch, dass es fast auf jedem Webserver
    läuft, eigentlich fast ungeschlagen. Und
  • 47:45 - 47:50
    ja, ich weiß, es ist wirklich von der
    reinen Theorieperspektive mit Sicherheit
  • 47:50 - 47:54
    nicht die schönste Sprache, aber es ist
    definitiv immer noch zeitgemäß.
  • 47:54 - 48:10
    Herald: So, im Chat, wie IRC, der... Okay,
    geht besser?
  • 48:10 - 48:14
    Avocadoom: Von wem jetzt, von mir schon?
    Ah, okay, das erklärt auch, warum er immer
  • 48:14 - 48:20
    wieder leise ist. Aber ja, gerade
    übrigens, ich überbrück' das mal ein
  • 48:20 - 48:24
    bisschen, gerade mit dieser ganzen
    Geschichte, mit PHP 7 und PHP 8 sind ja
  • 48:24 - 48:27
    viele Änderungen reingekommen, die der
    Sprache einen ordentlich modernen Anstrich
  • 48:27 - 48:32
    verleihen. Und es gibt auch immer wieder
    neue Frameworks und Ansätze, die PHP-
  • 48:32 - 48:38
    Entwicklung immer leichter machen und
    immer moderner. Und ich denke schon, dass
  • 48:38 - 48:44
    das auch Zukunft hat.
    Herald: So, ich hoffe, man hört mich?
  • 48:44 - 48:47
    Avocadoom: Ja, man hört dich.
    Herald: Wie sieht es mit der
  • 48:47 - 48:51
    Kompatibilität für Smartphones bei
    statischen Seiten aus?
  • 48:51 - 48:54
    Avocadoom: Da ändert sich eigentlich
    nichts, also es ändert sich ja quasi nur
  • 48:54 - 49:00
    was wie die Seite ausliefert. Aber wie die
    Seite dargestellt wird, ist quasi ja für
  • 49:00 - 49:05
    euer Smartphone das gleiche. Das heißt
    nur, wie die Seite quasi vorher
  • 49:05 - 49:10
    zusammengebaut wird und so, das ist quasi
    das wichtige, was sich ändert. Aber wie
  • 49:10 - 49:13
    die Seite dann dargestellt wird also mit
    JavaScript und CSS und so. Das bleibt ja
  • 49:13 - 49:18
    das gleiche. Wenn ihr jetzt noch ein
    Content Management System habt, wo ihr so
  • 49:18 - 49:22
    eine spezielle mobile Seite habt, was man
    in der Regel heute nicht mehr haben
  • 49:22 - 49:26
    sollte, weil man das inzwischen gut mit
    CSS und Co lösen kann, dann habt ihr
  • 49:26 - 49:29
    vielleicht ein Problem, dass ihr zwei
    Seiten bauen müsst, aber ansonsten ist
  • 49:29 - 49:35
    eigentlich die Kompatibilität mit
    Smartphones ziemlich super und die meisten
  • 49:35 - 49:39
    Smartphones können auch, also da können
    die eigentlich alle auch JavaScript
  • 49:39 - 49:42
    vollständig ausführen, die haben ja mit
    Safari oder Chrome oder was auch immer
  • 49:42 - 49:47
    eine vollständige JavaScript-Engine mit
    drinnen, also die Kompatibilität ist
  • 49:47 - 49:50
    eigentlich komplett gegeben und viele
    Newsportale und so arbeiten ja schon mit
  • 49:50 - 49:55
    diesen Techniken, das heißt dass ist
    eigentlich auch schon etabliert und
  • 49:55 - 50:00
    getestet, dass das läuft.
    Herald: Noch eine Frage, so einem Chat wie
  • 50:00 - 50:05
    der IRC. Wäre es da eine gute Idee, eine
    statische Seite daraus zu machen, wenn der
  • 50:05 - 50:09
    Chat dass einzige ist, was man machen
    will? Weil so wie ich das verstehe, wäre
  • 50:09 - 50:13
    es dafür ja eher mehr Last für den Server,
    oder?
  • 50:13 - 50:17
    Avocadoom: Ja, das ist wie gesagt das
    gleiche Beispiel mit der Kommentarspalte.
  • 50:17 - 50:20
    Wenn ihr dynamischen Inhalte wie ein Chat
    habt, dann wollte ihr die nicht immer
  • 50:20 - 50:26
    statisch rendern, weil die ändern sich ja
    ständig. Also das sind ja Inhalte, die
  • 50:26 - 50:30
    immer immer wieder sozusagen entsprechend
    sich ändern. Das heißt, was ihr da machen
  • 50:30 - 50:34
    könnt, wäre zum Beispiel ihr baut so eine
    Frontend Anwendung und macht es nur mit
  • 50:34 - 50:37
    JavaScript und zieht euch das darüber.
    Aber das ist nicht das, was ich unter
  • 50:37 - 50:41
    einer statischen Seite sozusagen verstehe,
    weil eine statische Seite ist für mich
  • 50:41 - 50:45
    was, wo der Inhalt quasi schon generiert
    ist und in HTML vorliegt, wenn ihr die
  • 50:45 - 50:48
    Seite aufruft. Also da gibt es eigentlich
    nur die zwei Wege: Entweder man macht das
  • 50:48 - 50:53
    komplett über eine Backend Anwendung oder
    man macht es komplett im Frontend, aber
  • 50:53 - 50:58
    man kann halt sozusagen also das halt
    vorher auszuliefern in gegossenes HTML,
  • 50:58 - 51:02
    was sozusagen Accessibility Tools oder
    eine Suchmaschine lesen können, dass ist
  • 51:02 - 51:06
    eigentlich eher unvorteilhaft, weil dann
    müsste man alle paar Sekunden die Seite
  • 51:06 - 51:10
    neu rendern und das ist ja viel zu viel
    Last.
  • 51:10 - 51:15
    Herald: Ja, braucht man dann für eine
    statische Seite mehr Leistung beim Client?
  • 51:15 - 51:21
    Avocadoom: Nein, in der Regel eigentlich
    nicht. Also viele Seiten setzen
  • 51:21 - 51:24
    heutzutage, also das Einzige was halt viel
    Leistung braucht ist JavaScript. Aber
  • 51:24 - 51:30
    viele Seiten setzen ja heutzutage schon
    auf JavaScript, auch wenn sie vom
  • 51:30 - 51:33
    Conten tManagement System kommen. Und das
    JavaScript, was zum Beispiel verwendet
  • 51:33 - 51:38
    wird, um Hydration zu betreiben, ist nicht
    unbedingt etwas, was die Leistung zieht.
  • 51:38 - 51:42
    Also der Leistungsunterschiede ist
    eigentlich quasi gleich Null. Und wenn du
  • 51:42 - 51:45
    zum Beispiel komplett auf JavaScript
    verzichtet, dann habt ihr sogar noch einen
  • 51:45 - 51:49
    Leistungsboost eigentlich in der Regel.
    Außer ihr schreibt jetzt komplett
  • 51:49 - 51:52
    verrücktes CSS, aber das ist dann auch
    wieder eine Sache die euch auch mit
  • 51:52 - 51:54
    Content Management Systemen passieren
    kann. Also eigentlich ist der
  • 51:54 - 52:00
    Leistungsunterschiede der gleiche bzw.
    vielleicht habt ihr sogar mehr Leistung
  • 52:00 - 52:04
    wenn in eine statische Seite baut. Je
    nachdem wie viel JavaScript ihr sozusagen
  • 52:04 - 52:08
    in eure Seite einfügt. Wenn ihr da jetzt
    natürlich das große 3D Rendering, ich zieh
  • 52:08 - 52:11
    mir ständig Content rein JavaScript baut,
    dann hat sie natürlich mehr
  • 52:11 - 52:14
    Leistungsverbrauch, aber das ist nicht
    zwingend ein Problem einer statischen
  • 52:14 - 52:17
    Seite.
    Herald: Du hast ja zum Ende von deinem
  • 52:17 - 52:21
    Vortrag noch Barrierefreiheit
    angesprochen. Muss man da auf irgendwas
  • 52:21 - 52:26
    achten, dass es dann für Screenreader und
    so gut lesbar ist?
  • 52:26 - 52:30
    Avocadoom: Also was ich mir dabei gedacht
    habe, ist im Prinzip, dass so ein
  • 52:30 - 52:34
    Screenreader natürlich einfach glaube ich
    besser damit klarkommt, wenn er schon
  • 52:34 - 52:40
    vorher das ganze HTML vorliegen hat. Was
    ich halt prinzipiell beachten würde, das
  • 52:40 - 52:45
    einfach die generellen Accessability-
    Guidelines zu beachten sind, von der W3C
  • 52:45 - 52:49
    und ähnlichen, das ist sowieso immer klar.
    Das sollte man auch generell, wenn man
  • 52:49 - 52:53
    eine Seite mit was auch immer baut machen.
    Aber was ich sehr gut finde ist halt, dass
  • 52:53 - 52:57
    wenn man zum Beispiel jetzt kein
    JavaScript enabed hat, weil man damit
  • 52:57 - 53:03
    vielleicht nicht klarkommt, wenn man
    Accessability Tools hat und nur die Seite
  • 53:03 - 53:06
    statisch rausgerendert sehen möchte, ohne
    irgendwelche Hydration oder ähnliches,
  • 53:06 - 53:11
    dann kann man halt mit den Accessability
    Tools quasi relativ easy darüber gehen.
  • 53:11 - 53:13
    Und beachten muss man dabei eigentlich
    nichts Spezielles. Ich sehe es einfach nur
  • 53:13 - 53:20
    als Vorteil, wenn das HTML quasi direkt
    vorliegt und so ein Tool sich nicht darum
  • 53:20 - 53:24
    kümmern muss, dass irgendwo noch was
    dynamisch hinzugefügt wird, sondern
  • 53:24 - 53:27
    Screenreader direkt anfangen kann, das
    einmal von oben nach unten abzuarbeiten.
  • 53:27 - 53:30
    Also beachten muss man dabei nichts. Ich
    habe das mehr erwähnt, weil ich das
  • 53:30 - 53:35
    einfach sehr sinnvoll finde, dass man
    damit mehr Leute sozusagen auch targeten
  • 53:35 - 53:40
    kann und dass man dafür sorgen kann, dass
    man nicht darauf achten muss, dass die
  • 53:40 - 53:44
    jetzt vielleicht irgendein Tool verwenden,
    was mit ich "füge hier mal mit Dynamik
  • 53:44 - 53:47
    ganz viel Spaß hinzu" irgendwie nicht klar
    kommen kann.
  • 53:47 - 53:52
    Herald: Ah ja, cool. Welches Backend
    würdest du für Nutzer empfehlen, die kein
  • 53:52 - 53:57
    Markdown schreiben wollen?
    Avocadoom: Hmmm, das kommt drauf an, was
  • 53:57 - 54:05
    man machen will. Wenn man einen Blog hat
    würde ich tatsächlich entweder auf ein
  • 54:05 - 54:12
    Blog Service setzen, also so was wie
    Medium oderso und mich da an der an die
  • 54:12 - 54:18
    API anschließen, weil das einfach relativ
    gute editing experience bietet oder auch
  • 54:18 - 54:21
    an anderen Hosting Service oder z.B. auch
    einfach ein klassisches Content Management
  • 54:21 - 54:26
    System wie WordPress oder ähnliches
    verwenden. Es gibt tatsächlich auch so
  • 54:26 - 54:31
    Frontends für einige Static Site
    Generators, die euch das sozusagen
  • 54:31 - 54:37
    ermöglichen, dass man dann so einen Editor
    davor hat, der dann Markdown am Ende
  • 54:37 - 54:41
    hinten raus rendert, aber die haben
    meistens den Nachteil, dass die oft auf
  • 54:41 - 54:45
    dem Client laufen und dann bei euch
    laufen, auf dem Desktop quasi, und dass
  • 54:45 - 54:48
    man dann trotzdem sich immer noch darum
    kümmern muss, dass das dann irgendwo in
  • 54:48 - 54:53
    git gepusht wird und ähnliches und dann
    irgendwo hoch kommt. Und daher würde ich
  • 54:53 - 54:59
    eher sagen Notfalls, wenn man zum Beispiel
    mit Wordpress schon mal gearbeitet hat
  • 54:59 - 55:03
    oder mit einem ähnlichen System gucken ob
    das erst mal eine Rest-API anbietet und
  • 55:03 - 55:10
    sich darüber versuchen mit dem Static Site
    Generator zu verständigen.
  • 55:10 - 55:16
    Herald: Es kommt noch viel: "Danke für
    deinen coolen Talk" rein.
  • 55:16 - 55:20
    Avocadoom: Gerne. Ich hoffe euch hat es
    Spaß gemacht.
  • 55:20 - 55:26
    Herald: Genau. Vielleicht noch eine letzte
    Verständnisfrage. Der Nutzer fragt / oder
  • 55:26 - 55:31
    die Nutzerin: Ich verstehe jetzt noch
    nicht zu 100 Prozent was genau man mit
  • 55:31 - 55:35
    statischen Sites verhindern will? Ist es,
    dass der Client nicht direkt mit dem
  • 55:35 - 55:40
    Server interagiert oder dass es keine User
    Eingaben gibt, die an einen Server
  • 55:40 - 55:45
    weitergegeben werden?
    Avocadoom: Beides will man nicht unbedingt
  • 55:45 - 55:50
    verhindern. Was man vor allem verhindern
    will ist, dass man sich, dass man zum
  • 55:50 - 55:54
    Beispiel ein System auf dem Server liegen
    hat, wie zum Beispiel ein, also wenn ihr
  • 55:54 - 55:57
    ein klassisches Content Management System
    habt, ich erkläre es mal so, so ein
  • 55:57 - 56:01
    WordPress oder so, oder ein Joomla oder
    ein Drupal oder was auch immer dann
  • 56:01 - 56:07
    generiert euch das beim Aufruf der Seite
    das HTML, was dann an den Client
  • 56:07 - 56:12
    ausgeliefert wird. Dass heißt das System,
    wenn so ein Client das aufruft, dann
  • 56:12 - 56:16
    interagiert das System damit. Oder habt
    ihr zum Beispiel eine Suche drin und so
  • 56:16 - 56:19
    eine Suche die sucht natürlich in der
    Datenbank. Das heißt, wenn ihr diese Suche
  • 56:19 - 56:23
    entsprechend manipulieren würdet und es
    wäre jetzt bekannt, dass in eurem Content
  • 56:23 - 56:28
    Management System eine SQL-Injection
    möglich wäre, dann können Sie so rüber ins
  • 56:28 - 56:31
    System kommen. Das heißt, wenn das System
    nicht vernünftig wartet und ihr dieses
  • 56:31 - 56:36
    SQL-Injection Problem Update nicht
    installiert, dann ist diese Lücke
  • 56:36 - 56:41
    sozusagen da, dann stehen da sozusagen die
    Tore offen. Das heißt, das ist zum
  • 56:41 - 56:45
    Beispiel der Punkt, dass ihr da sagen
    könnt diese statische Seite bietet einfach
  • 56:45 - 56:50
    kein direktes Einfallstor in euer System,
    weil sie quasi keine direkte Interaktion
  • 56:50 - 56:54
    mit dem Backend ermöglicht. Das bietet
    halt auch den zweiten Vorteil, dass ihr
  • 56:54 - 56:59
    Performance habt, weil ihr quasi nicht bei
    jedem Aufruf anfangt, die Seite neu zu
  • 56:59 - 57:04
    generieren, sondern ihr habt einfach die
    fertig generierte Seite und liefert sie
  • 57:04 - 57:08
    nur noch an das Endgerät aus. Das heißt
    ihr interagiert immer noch mit einer Art
  • 57:08 - 57:11
    Server, aber ihr interagiert nicht mit dem
    Content Management System und habt nicht
  • 57:11 - 57:15
    die Möglichkeit, dass sie zum Beispiel in
    eurer Datenbank einfallen. Und das sind
  • 57:15 - 57:18
    eigentlich die zwei hauptsächlichen
    Gründe, weswegen man Static Site
  • 57:18 - 57:22
    Generation vorziehen möchte. Außerdem hat
    es halt den großen Vorteil, dass dadurch,
  • 57:22 - 57:33
    dass alles vorgerendert ist, dass diese
    entsprechende Last, also diese
  • 57:33 - 57:39
    Performance, ich habe es ja schon erwähnt,
    dass quasi einfach das passiert, ihr
  • 57:39 - 57:42
    schiebt die Seite einfach einmal hoch und
    dann ist sie da und dann wird sie
  • 57:42 - 57:45
    abgerufen und ihr müsst nicht gucken, dass
    irgendwo was kaputt gehen kann.
  • 57:45 - 57:51
    Herald: Ja, danke für das Beantworten der
    Fragen und auch für diesen super coolen
  • 57:51 - 57:54
    Vortrag hier bei Chaos West.
  • 57:54 - 57:58
    rc3-nowhere Abspannmusik
  • 57:58 - 58:17
    Untertitel erstellt von c3subtitles.de
    im Jahr 2021. Mach mit und hilf uns!
Title:
Make it static!
Description:

more » « less
Video Language:
German
Duration:
58:17
Fritz Maier edited German subtitles for Make it static!
Fritz Maier edited German subtitles for Make it static!
Fritz Maier edited German subtitles for Make it static!
Fritz Maier edited German subtitles for Make it static!
C3Subtitles edited German subtitles for Make it static!
C3Subtitles edited German subtitles for Make it static!
C3Subtitles edited German subtitles for Make it static!

German subtitles

Revisions