<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Performance on Liftoff</title><link>https://hugo-liftoff.kevinhorst.de/de/tags/performance/</link><description>Recent content in Performance on Liftoff</description><generator>Hugo</generator><language>de</language><lastBuildDate>Fri, 12 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hugo-liftoff.kevinhorst.de/de/tags/performance/index.xml" rel="self" type="application/rss+xml"/><item><title>Icons ohne Build-Schritt</title><link>https://hugo-liftoff.kevinhorst.de/de/articles/icons-without-a-build-step/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://hugo-liftoff.kevinhorst.de/de/articles/icons-without-a-build-step/</guid><description>&lt;p&gt;Icon-Fonts liefern jede Glyphe an jeden Besucher aus. Sprite-Sheets
brauchen einen Build-Schritt und eine Namenskonvention, die sich
niemand merkt. Liftoff geht einen dritten Weg: Jedes Icon wird während
des Hugo-Builds von der Iconify-API geladen und als SVG eingebettet.&lt;/p&gt;
&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__head"&gt;
 &lt;span class="codeblock__lang"&gt;go-html-template&lt;/span&gt;
 &lt;button type="button" class="codeblock__copy" data-action="copy-code" aria-label="Kopieren"&gt;Kopieren&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;partial&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;icon.html&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;simple-icons:codeberg&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Jedes Set auf Iconify funktioniert, adressiert als &lt;code&gt;set:name&lt;/code&gt;. Ein
Name ohne Präfix landet bei den Material Design Icons, &lt;code&gt;check&lt;/code&gt; und
&lt;code&gt;mdi:check&lt;/code&gt; sind also dasselbe Icon.&lt;/p&gt;</description></item><item><title>Ein Performance-Budget, das man einhält</title><link>https://hugo-liftoff.kevinhorst.de/de/articles/a-performance-budget/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://hugo-liftoff.kevinhorst.de/de/articles/a-performance-budget/</guid><description>&lt;p&gt;Ein Performance-Budget funktioniert nur, wenn es kurz genug ist, um im
Kopf zu bleiben. Für eine Inhaltsseite reichen drei Zahlen.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Budget&lt;/th&gt;
					&lt;th&gt;Zielwert&lt;/th&gt;
					&lt;th&gt;Was es sprengt&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Requests pro Seite&lt;/td&gt;
					&lt;td&gt;unter 10&lt;/td&gt;
					&lt;td&gt;Webfonts, Analytics&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CSS&lt;/td&gt;
					&lt;td&gt;unter 30 kB&lt;/td&gt;
					&lt;td&gt;Utility-Frameworks&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JavaScript&lt;/td&gt;
					&lt;td&gt;unter 10 kB&lt;/td&gt;
					&lt;td&gt;alles mit Build-Schritt&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Liftoff gibt sein JavaScript für drei Dinge aus: den Theme-Umschalter,
die Copy-Buttons an Codeblöcken und den Blueprint-Filter. Alle drei
bleiben ohne Skripte benutzbar, und nur deshalb dürfen sie überhaupt
existieren.&lt;/p&gt;</description></item></channel></rss>