hide🌟Accessibility matters for everyone!🌟
Learn with Amara.org about the Best Practices for Creating SDH Subtitles !

< 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! Dec 29, 2021, 11:28 AM
Fritz Maier edited German subtitles for Make it static! Dec 29, 2021, 11:21 AM
Fritz Maier edited German subtitles for Make it static! Dec 29, 2021, 10:37 AM
Fritz Maier edited German subtitles for Make it static! Dec 29, 2021, 10:07 AM
C3Subtitles edited German subtitles for Make it static! Dec 28, 2021, 9:00 PM
C3Subtitles edited German subtitles for Make it static! Dec 28, 2021, 9:00 PM
C3Subtitles edited German subtitles for Make it static! Dec 27, 2021, 3:57 PM

German subtitles

Revisions