<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Torben Leuschner &#8211; Webentwicklung &amp; Online-Marketing</title>
	<atom:link href="https://www.torbenleuschner.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.torbenleuschner.de/blog</link>
	<description>Aus dem Leben eines selbständigen Webworkers</description>
	<lastBuildDate>Thu, 24 May 2018 10:00:19 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.26</generator>
	<item>
		<title>Wie bild.de, zalando.de oder otto.de ihren Pagespeed optimieren könnten</title>
		<link>https://www.torbenleuschner.de/blog/1004/wie-bild-de-zalando-de-oder-otto-de-ihren-pagespeed-optimieren-koennten/</link>
		<comments>https://www.torbenleuschner.de/blog/1004/wie-bild-de-zalando-de-oder-otto-de-ihren-pagespeed-optimieren-koennten/#comments</comments>
		<pubDate>Tue, 05 May 2015 09:21:15 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=1004</guid>
		<description><![CDATA[Obwohl mittlerweile jedem Webworker klar sein dürfte, dass die Optimierung einer Webseite auf eine höhere Ladegeschwindigkeit und niedrigere Ladezeit in mehrerer Hinsicht ein essentieller Erfolgsfaktor ist, scheitern dennoch sehr viele an der Umsetzung. Dieser Artikel soll also vor allem praktische Optimierungstechniken aufzeigen, die sich auch beim eigenen Projekt anwenden lassen. Um dabei nicht in theoretischen Floskeln zu versinken, werden die verschiedenen Maßnahmen am Beispiel vier großer deutscher Webseiten veranschaulicht. Warum eine Pagespeed-Optimierung auch in Zeiten von VDSL und LTE noch sinnvoll [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Obwohl mittlerweile jedem Webworker klar sein dürfte, dass die Optimierung einer Webseite auf eine höhere Ladegeschwindigkeit und niedrigere Ladezeit in mehrerer Hinsicht ein essentieller Erfolgsfaktor ist, scheitern dennoch sehr viele an der Umsetzung. Dieser Artikel soll also vor allem praktische Optimierungstechniken aufzeigen, die sich auch beim eigenen Projekt anwenden lassen. Um dabei nicht in theoretischen Floskeln zu versinken, werden die verschiedenen Maßnahmen am Beispiel vier großer deutscher Webseiten veranschaulicht.</p>
<h2>Warum eine Pagespeed-Optimierung auch in Zeiten von VDSL und LTE noch sinnvoll ist</h2>
<p>In Gesprächen mit Website-Betreibern hört man häufig die Aussage, man müsse die eigene Ladezeit optimieren, da dies seit einigen Jahren ein Google-Rankingfaktor sei. Obwohl diese Aussage faktisch nicht komplett falsch ist, wird an dieser Stelle häufig zu einfach gedacht.</p>
<p>Ein anderes Bild ergibt sich, wenn man die Ladegeschwindigkeit unter Gesichtspunkten der <a href="http://de.wikipedia.org/wiki/User_Experience">User Experience (UX)</a> betrachtet. Diese ergibt sich aus diversen Webseite-Bausteinen wie Design, Nutzerführung, Zugänglichkeit, Interaktion oder Inhalt. Allerdings haben diese Punkte gemein, dass ihr Erfolg im Sinne einer positiven UX von der Erwartungkonformität des Besuchers abhängt.</p>
<p>Anders sieht es beim Thema Pagespeed aus. Niemand, unabhängig von Alter, Geschlecht oder Nationalität, wartet gerne. Durch eine Verbesserung der Ladezeit kann man sich also sicher sein, jedem Besucher der Webseite eine verbesserte Nutzererfahrung zu bieten. Umfangreiche Split-Tests oder Eyetracking-Studien, die bei anderen UX-Optimierungen notwendig wären, kann man sich sparen.</p>
<h2>Pagespeed-Analyse und die Rolle von Google PageSpeed Insights</h2>
<p>Häufig wird die von <a href="http://developers.google.com/speed/pagespeed/insights/">Googles PageSpeed Insights</a> errechnete Punktzahl zwischen 1 und 100 gleichgesetzt mit dem Optimierunggrad einer Website. Natürlich gibt der vom Tool ausgespuckte Wert einen guten Überblick, sollte aber nie mehr als ein erster Indikator sein. Schließlich unterliegt die Punktzahl wie jeder andere maschinell errechnete Wert den Fesseln seines eigenen Algorithmus. Es kann sogar vorkommen, dass von PageSpeed Insights vorgeschlagene Empfehlungen im Kontext des gesamten Webprojekts betrachtet eher negative Auswirkungen hätten.</p>
<div id="attachment_1005" style="width: 810px" class="wp-caption alignnone"><img class="size-large wp-image-1005" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.25.32-1024x577.png" alt="100 Punkte sehen zwar gut aus, sind aber nicht immer erstrebenswert!" width="800" height="451" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.25.32-1024x577.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.25.32-620x350.png 620w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.25.32.png 1142w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text">100 Punkte sehen zwar gut aus, sind aber nicht immer erstrebenswert!</p></div>
<p>Die Auswertung der vom Tool empfohlenen Maßnahmen kann dementsprechend nur ein Teil einer Pagespeed-Analyse darstellen. Mindestens genauso wichtig ist es, sich mit den Entwicklerwerkzeugen seines Browsers hinreichend vertraut zu machen. Hier ergeben sich nämlich bereits mit wenigen Klicks umfangreiche Möglichkeiten, sich einen detailierten Überblick des Optimierungsgrades einer Webseite zu verschaffen. Im Falle des Chrome-Browsers sollte man sich intensiv mit dem “<em>Network</em>”-Reiter beschäftigen. Wer später noch tiefer einsteigen möchte, findet unter dem Punkt “<em>Timeline</em>” weitere spannende Einblicke.</p>
<div id="attachment_1006" style="width: 810px" class="wp-caption alignnone"><img class="size-large wp-image-1006" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.29.42-1024x911.png" alt="Mit den Chrome oder Firefox Developer Tools lässt sich eine Website vollständig auseinandernehmen - auch im Bezug auf den Pagespeed." width="800" height="712" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.29.42-1024x911.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.29.42-620x552.png 620w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.29.42.png 1126w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text">Mit den Chrome oder Firefox Developer Tools lässt sich eine Website vollständig auseinandernehmen &#8211; auch im Bezug auf den Pagespeed.</p></div>
<p>Dennoch soll die Rolle des <a href="https://developers.google.com/speed/pagespeed/insights/">PageSpeed Insights Tools</a> an dieser Stelle natürlich nicht heruntergespielt werden, da es vielen Webworkern einen simplen Einstieg in das Thema bietet. Auch bei den Optimierungsmaßnahmen, die im weiteren Artikelverlauf vorgestellt werden, wird man ohne Probleme einen Bezug zum jeweiligen Tipp von Googles Tool herstellen können.</p>
<h2>Die drei Säulen der Pagespeed-Optimierung</h2>
<p>Fast sämtliche Maßnahmen der Pagespeed-Optimierung lassen sich in drei Kategorien einordnen:</p>
<h3>Reduzierung von http-Requests</h3>
<p>Das Reduzieren von http-Requests ist in der Regel die wichtigste Optimierungsmaßnahme und gleichzeitig ein Punkt, bei dem die meisten Webseiten noch großes Potential aufweisen. Unter einem <a href="http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol">http-Requests</a> versteht man die Anfrage des Clients (Browser), sowie die entsprechende Antwort vom Server. Neben dem initialen HTML-Dokument werden bei jedem Seitenaufruf meist dutzende weitere Ressourcen vom Server angefordert, die jeweils einen eigenen Request erzeugen. Wir reden hier in der Regel von Bild-, CSS- und Javascript-Dateien, aber auch eingebettete Schriftarten oder AJAX-Aufrufe erzeugen natürlich einen http-Request.</p>
<p>Vor allem zwei Gegebenheiten sind dafür verantwortlich, dass jeder einzelne http-Requests die Ladezeit erhöht. Zum einen befolgen selbst moderne Browser noch die Regel, nicht zu viele Requests vom selben Server gleichzeitig zu laden. Die aktuellen Versionen von Google Chrome und Mozilla Firefox erlauben beispielsweise <a href="http://sgdev-blog.blogspot.sg/2014/01/maximum-concurrent-connection-to-same.html">höchstens sechs parallele Verbindungen</a>. Dieses Verhalten ist zum einen sinnvoll, da Server sonst, in etwa vergleichbar mit einer <a href="http://de.wikipedia.org/wiki/Denial_of_Service">DDoS-Attacke</a>, schnell in die Knie gehen könnten. Zum anderen bedeutet dies aber auch, dass Webseiten die mehr als beispielsweise sechs Ressourcen benötigen, die Dateien in mehreren Durchgängen herunterladen müssen.</p>
<p>Ein weiterer Nachteil des Hypertext Transfer Protocol (HTTP) in der Version 1.0 oder 1.1 ist, dass jeder http-Requests in der Regel Informationen übertragt, die an der jeweiligen Stelle gar nicht verwendet werden. Hier unterscheidet man zwischen des Request Headers (Anfrage vom Client an den Server) und Response Headers (Antwort des Servers). Vor allem bei ersteren werden häufig unnötige Daten übertragen. Ein schönes Beispiel sind statische Bild- oder CSS-Dateien, die in den Requests Headers sämtliche der Domain zugewiesenen Cookies erhalten, obwohl diese natürlich an keiner Stelle benötigt werden.</p>
<p>Auch wenn sich beide Punkte vielleicht trivial anhören, so sollte man die Reduzierung von http-Requests als Maßnahme der Pagespeed-Optimierung auf keinen Fall unterschätzen. Weit über 100 Requests bei einem einzelnen Seitenaufruf sind nämlich weniger die Ausnahme als viel mehr die Regel.</p>
<h3>Verkleinerung der zu übertragenden Dateimenge</h3>
<p>Natürlich lässt sich nicht jeder http-Request einfach streichen, schließlich müssen Inhalte und Funktionalitäten ja irgendwo her kommen. Jedoch gibt es einige Möglichkeiten, die Größe einer Datei zu reduzieren. Im weiteren Verlauf des Artikels werden hierzu entsprechende Maßnahmen vorgestellt. Besonders erstrebenswert sind natürlich Techniken, die eine automatische Reduktion erzielen, ohne das man selbst an der Datei herumschrauben muss.</p>
<h3>Ressourcen in die richtige Reihenfolge bringen</h3>
<p>Dieser Punkt macht in der Praxis meist den Unterschied zwischen schnellen und super schnellen Webseiten aus, birgt dafür aber auch die größte technische Komplexität. Grob gesagt geht es darum, die vom Server zu ladenden Ressourcen in die richtige Reihenfolge zu bringen, um dadurch wichtige Inhalte unmittelbar sichtbar zu machen. So entsteht der subjektive Eindruck einer wesentlich kürzeren Ladezeit. Allerdings sind dafür meist tiefgreifende Eingriffe in die Technik einer Webseite erforderlich, weshalb entsprechende Maßnahmen in diesem Artikel nur angerissen werden können.</p>
<h2>Fallbeispiel #1: bild.de</h2>
<p>Die ersten zwei Maßnahmen zur Optimierung der Ladegeschwindigkeit lassen sich gut am Beispiel der Website der <a href="http://www.bild.de/">auflagenstärksten deutschen Zeitung</a> festmachen.</p>
<h3>Statische Ressourcen reduzieren</h3>
<p>Unter der Reduzierung von statischen Ressourcen versteht man beim Thema Pagespeed-Optimierung die Bereinigung unnötiger Zeichen in HTML-, CSS- und Javascript-Dateien, die für die korrekte Ausführung nicht notwendig sind. Dies können doppelte Leerzeichen, Zeilenumbrüche, Tabulatoren, aber auch umfangreiche Kommentare sein. Solange man seinen Code sauber formatiert, ist es dem Browser natürlich egal, ob Zeilen korrekt eingerückt oder Funktionen hinreichend kommentiert sind; er benötigt diese Informationen nicht.</p>
<p>Am Beispiel von bild.de ließen sich so immerhin gut 30 KB an zu übertragender Dateimenge einsparen. Heruntergebrochen auf die Dateien, welche nicht reduziert sind, ergäbe dies eine prozentuale Ersparnis von knapp 10 Prozent.</p>
<div id="attachment_1007" style="width: 810px" class="wp-caption alignnone"><img class="size-large wp-image-1007" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.38.10-1024x393.png" alt="Weder schön noch lesbar, dafür aber schnell: Reduzierter Code" width="800" height="307" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.38.10-1024x393.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.38.10-620x238.png 620w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text">Weder schön noch lesbar, dafür aber schnell: Reduzierter Code</p></div>
<p>Die Reduzierung von statischen Ressourcen ist meistens schnell erledigt. So stehen diverse Online-Tools wie <a href="http://jscompress.com/">jscompress.com</a> (Javascript), <a href="http://cssminifier.com/">cssminifier.com</a> (CSS) oder <a href="http://htmlcompressor.com/">htmlcompressor.com</a> (HTML) zur Verfügung. Für Webentwickler ist es hingegen erstrebenswert, einen Reduzierungs-Prozess direkt in die eigene <a href="http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung">Entwicklungsumgebung (IDE)</a> zu integrieren. Dies funktioniert beispielsweise hervorragend mit Task Runnern wie <a href="http://gruntjs.com/">Grunt</a> oder <a href="http://gulpjs.com/">gulp.js</a>. So ist sichergestellt, dass man weiterhin über eine (hoffentlich) gut dokumentierte Entwicklungsversion einer Datei verfügt, auf dem Produktivsystem aber automatisch die reduzierte Variante landet.</p>
<h3>Javascript- und CSS-Dateien kombinieren</h3>
<p>Ging es beim vorherigen Punkt noch um die Reduzierung der Dateigröße, so möchten wir nun die Anzahl an http-Requests verringern. Dies lässt sich unter anderem erreichen, in dem man Javascript- und CSS-Dateien jeweils zusammenlegt. Gerade beim Einsatz von Content Management Systemen wie WordPress werden nicht selten mehr als ein Dutzend verschiedener CSS- und Javascript-Dateien geladen. Meist lässt sich dies nicht vermeiden, schließlich müssen die Plugin-Entwickler ihre Funktionalitäts- und Design-Anweisungen ja irgendwo mitgeben. Einen negativen Einfluss auf die Ladezeit hat es dennoch.</p>
<p>Gerade bei bild.de ist dieser Effekt enorm. So werden alleine über 70(!) einzelne Javascript- und immerhin zehn CSS-Dateien vom Server angefordert. Natürlich sind in diesem Fall sehr viele Script-Einbettungen den externen Werbe-Anbietern geschuldet. Im Zuge der Optimierungsmaßnahme “Reduzierung von http-Requests” bestünde aber an dieser Stelle noch riesiges Optimierungspotential.</p>
<div id="attachment_1008" style="width: 590px" class="wp-caption alignnone"><img class="size-full wp-image-1008" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.40.47.png" alt="bild.de lädt bei einem einzelnen Seitenaufruf über 70 Javascript-Dateien!" width="580" height="36" /><p class="wp-caption-text">bild.de lädt bei einem einzelnen Seitenaufruf über 70 Javascript-Dateien!</p></div>
<p>Vor allem das Kombinieren von CSS-Dateien ist meistens nicht sonderlich schwer. Hier ist lediglich zu beachten, dass die Inhalte der Dateien in der exakt selben Reihenfolge wie vorher eingefügt werden. Ansonsten könnten sich Selektoren irtürmlich gegenseitig überschreiben. Wer bereits mit <a href="http://sass-lang.com/">SASS</a> oder <a href="http://lesscss.org/">LESS</a> arbeitet, hat dank <em>@import</em> an dieser Stelle sowieso kein Problem.</p>
<p>Schwieriger wird es häufig bei Javascript-Dateien, da diese untereinander Abhängigkeiten aufweisen können. Beispielsweise wird ein kritischer Fehler erzeugt, wenn ein Script die jQuery-Bibilothek benötigt, diese aber noch gar nicht zur Verfügung steht. Ähnlich wie bei den CSS-Dateien muss man also auch hier die korrekte Reihenfolge beachten sowie sicherstellen, dass der Javascript-Quellcode absolut korrekt formatiert wurde. Ein fehlendes Semikolon am Zeilenende kann hier bereits viel Ärger bedeuten.</p>
<p>Wie bereits beim letzten Punkt sollte der moderne Webentwickler auch die Aufgabe des Kombinierens direkt von seiner IDE via Task Runner erledigen lassen. Falls ein <a href="http://de.wikipedia.org/wiki/Softwareverteilung">Deployment-Prozess</a> existiert, könnte dieser Schritt aber auch hervorragend hier durchgeführt werden.</p>
<h2>Fallbeispiel #2: zalando.de</h2>
<p>Auch am Beispiel des großen deutschen Online-Shops <a href="https://www.zalando.de">zalando.de</a> lassen sich drei Optimierungstechniken exemplarisch erklären.</p>
<h3>Browser-Caching nutzen</h3>
<p>Zumal man keine Single Landing Page betreibt, ist es die Regel, dass Besucher nicht nur ein, sondern hoffentlich möglichst viele Seiten aufrufen. Aber auch Stammbesucher könnten mehrmals wöchentlich die eigene Webseite besuchen. In beiden Fällen ist es sinnvoll, dem Browser mitzuteilen, wie lange er statische Ressourcen (CSS-, Javascript- oder Bild-Dateien) im <a href="http://de.wikipedia.org/wiki/Browser-Cache">eigenen Cache</a> behalten darf. So müssen sie nicht bei jedem Seitenaufruf neu vom Server angefordert, sondern können direkt von der lokalen Festplatte des Nutzers geladen werden. Dadurch spart man gleich doppelt, denn man reduziert die zu übertragende Dateimenge und die Anzahl an http-Requests.</p>
<p>Im Falle von zalando.de wird selbst für sehr allgemeine, seitenübergreifende Elemente kein Ablaufdatum festgelegt. Dies betrifft beispielsweise statische Bilder wie das Logo, den eigenen Icon-Font aber auch die wichtigste CSS-Datei. So ist der Browser mit seiner Entscheidung auf sich allein gestellt und entscheidet sich im Zweifel dafür, bei jedem Seitenaufruf einer Unterseite sämtliche Ressourcen neu vom Server anzufordern.</p>
<div id="attachment_1009" style="width: 810px" class="wp-caption alignnone"><img class="size-large wp-image-1009" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.44.37-1024x391.png" alt="Statische Ressourcen wie das Logo oder CSS-Dateien werden bei Zalando nicht gecached" width="800" height="305" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.44.37-1024x391.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.44.37-620x237.png 620w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.44.37.png 1346w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text">Statische Ressourcen wie das Logo oder CSS-Dateien werden bei Zalando nicht gecached</p></div>
<p>Google PageSpeed Insights <a href="https://developers.google.com/speed/docs/insights/LeverageBrowserCaching">empfiehlt</a> für statische Ressourcen mindestens eine Haltbarkeit von einer Woche. Man kann jedoch einen wesentlich höheren Zeitraum definieren. Wenn man auf Nummer sicher gehen will, dass Benutzer keine alten Dateien ausgespielt bekommen, ergänzt man den Dateinamen bei jedem Update um einen Zeitstempel (z.B. von “<em><span style="text-decoration: underline;">style-1-1-2015.css</span></em>” auf “<em>style-15-2-2015.css</em>”).</p>
<p>Betreibt man einen Apache-Webserver lässt sich das Browser-Caching sehr einfach über die <a href="https://de.wikipedia.org/wiki/.htaccess">.htaccess-Datei</a> definieren. Die Deklaration erfolgt dabei über den <a href="http://de.wikipedia.org/wiki/Internet_Media_Type">Mime Type</a>.</p>
<script src="https://gist.github.com/41740e5c83b92efa31c6.js"></script>
<p>&nbsp;</p>
<h3>Statische Ressourcen komprimieren</h3>
<p>Unter der Komprimierung statischer Ressourcen versteht man die serverseitige Aktivierung einer Kompressionstechnik wie gzip oder deflate. Ähnlich wie man es von einem ZIP-Archiv kennt, werden Dateien dabei vom Server komprimiert und dann an den Client (Browser) geschickt. Dieser ist dafür zuständig, die Dateien vor der Verwendung wieder zu dekomprimieren. Die dadurch eingesparte Dateimenge ist vor allem bei Ressourcen mit häufig wiederkehrenden Textmustern wie CSS-Dateien enorm.</p>
<p>zalando.de liefert uns dafür ein schönes Beispiel. Zwar werden fast alle Dateien komprimiert ausgeliefert; die zwei, welche nicht komprimiert werden, zeigen jedoch eindrucksvoll, welches Potential diese Technik bietet. So kommt alleine eine Javascript-Datei auf eine Dateigröße von 58 KB. Komprimiert wäre sie hingegen nur gut 10 KB groß. Eine Einsparung von 48 KB oder 83 Prozent. Im Falle einer immer noch weit verbreiteten EDGE-Verbindung könnte nur durch die Komprimierung dieser Datei die Ladezeit um zwei bis drei Sekunden gesenkt werden.</p>
<p>Ähnlich wie beim letzten Punkt lässt sich auch hier eine Komprimierung über die .htaccess-Datei des Servers aktivieren.</p>
<script src="https://gist.github.com/05ec9589e8314f315316.js"></script>
<p>Bereits komprimierte Dateien wie Bilder oder bestimmte Schriftformate sollten von der serverseitigen Komprimierung ausgeschlossen werden.</p>
<h2>Fallbeispiel #3: bundestag.de</h2>
<p>Auch die offizielle Webseite des <a href="http://www.bundestag.de/">deutschen Bundestages</a> liefert uns zwei gute Fallbeispiele.</p>
<h3>Antwortzeit des Servers reduzieren</h3>
<p>Google PageSpeed Insights bemängelt im Falle von bundestag.de eine lange Antwortzeit des Servers. Diese Fehlermeldung wird ausgegeben, sobald der Server <a href="https://developers.google.com/speed/docs/insights/Server">länger als 200 ms benötigt</a>, das initiale HTML-Dokument zur Verfügung zu stellen. Bei bundestag.de sind es meist über 400 ms. Damit betrifft dieser Hinweis die Ausführungszeit der serverseitigen Scripte; also nicht HTML oder Javascript, sondern PHP, Java, Ruby on Rails oder natürlich auch sämtliche Datenbankabfragen.</p>
<p>Hier einen pauschalen Optimierungstipp zu geben, ist relativ schwierig. Schließlich ist zur Ermittlung von Flaschenhälsen eine genaue Code-Analyse notwendig. Bei komplexen Content Management Systemen oder Online-Shops sollte man aber auf jeden Fall &#8211; sofern noch nicht vorhanden &#8211; über eine serverseitige Caching-Lösung nachdenken. Diese schreibt im Idealfall die fertig generierten HTML-Dateien in regelmäßigen Zeitabständen auf die Festplatte des Servers. Ruft ein Besucher dann die Webseite auf, ist eine Aktivierung der serverseitigen Scripte gar nicht mehr notwendig; stattdessen wird einfach das Abbild aus dem Cache an den Browser geschickt. Durch Einsatz dieser Technik sollte es in der Regel kein Problem sein, unter die 200 ms zu kommen.</p>
<p>Große Online-Shop-Systeme wie <a href="http://magento.com/">Magento</a> liefern Caching-Module direkt frei Haus mit. Eine korrekte Konfiguration ist dennoch kein Kinderspiel und erfordert etwas Geduld. Im Falle des Content Management Systems WordPress lässt sich die Funktionalität über Plugins nachrüsten. Der deutsche Entwickler <a href="http://wpcoder.de/">Sergej Müller</a> bietet hierfür mit <a href="http://cachify.de/">Cachify</a> eine hervorragend simple Lösung an.</p>
<h3>Zielseiten-Weiterleitungen vermeiden</h3>
<p>Die mobile Variante von bundestag.de bietet ein weiteres Beispiel für eine Optimierung der Ladezeit. Ruft man die Domain bundestag.de mit einem Smartphone oder Tablet auf, so wird man gefragt, ob man zur mobilen Variante wechseln möchte. Bejaht man dies, wird man zu erst auf die Domain <em>m.bundestag.de</em> und anschließend auf <em>bundestag.de/mobil</em> weitergeleitet. Im Falle der ersten Weiterleitung könnte man nun über Responsive Webdesign vs. Mobile Site und Usability-Fallstricke im Allgemeinen diskutieren. Die zweite Weiterleitungen ist aber auf jeden Fall unnötig; hier könnte man direkt von <em>bundestag.de</em> auf <em>bundestag.de/mobil</em> springen.</p>
<div id="attachment_1010" style="width: 810px" class="wp-caption alignnone"><img class="size-large wp-image-1010" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.51.46-1024x293.png" alt="Das sagt PageSpeed Insights zu den Weiterleitungen" width="800" height="229" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.51.46-1024x293.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.51.46-620x178.png 620w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.51.46.png 1152w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text">Das sagt PageSpeed Insights zu den Weiterleitungen</p></div>
<p>Weiterleitungen sollten generell auf ein Minimum beschränkt werden. Denn jede Weiterleitung erzeugt einen eigenen http-Requests, dessen Antwort abgewartet werden muss, bevor das eigentliche HTML-Dokument überhaupt angefordert werden kann. Zudem ist es empfehlenswert, immer direkt mit dem <a href="http://en.wikipedia.org/wiki/HTTP_location">http-location-header</a> zu arbeiten. Eine Weiterleitung auf HTML- oder Javascript-Basis sorgt für weitere Verzögerung, da die kompletten Inhalte quasi doppelt geladen werden müssen.</p>
<h2>Fallbeispiel #4: otto.de</h2>
<p>Auch am Beispiel des deutschen Online-Shops <a href="https://www.otto.de/">otto.de</a> lassen sich hervorragend zwei Optimierungstechniken erklären.</p>
<h3>Bilder optimieren</h3>
<p>Bilder stellen nach wie vor ein prozentual hohen Anteil an der gesamten Dateigröße einer Webseite. Laut <a href="http://httparchive.org/index.php">httparchive.org</a> waren 2014 durchschnittlich über 50 Bilder auf einer einzigen Webseite eingebunden. Die zu übertragenden Daten durch Bilder legten von 2013 auf 2014 sogar um 21 Prozent zu. Es gibt also gute Gründe &#8211; und zum Glück auch viel Potential &#8211; um Bilder für das Web hinsichtlich einer schnelleren Ladezeit zu optimieren.</p>
<p>Alleine auf der Startseite von otto.de ließen sich laut <a href="https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fwww.otto.de%2F&amp;tab=desktop">Google PageSpeed Insights</a> 156 KB durch eine Optimierung der Bilder einsparen. In Summe werden ca. 900 KB Bildmaterial angefordert, wodurch die prozentuale Ersparnis bei über 17 Prozent liegen würde. Laut <a href="http://www.similarweb.com/website/otto.de">similarweb.com</a> hat otto.de 16.900.000 Besucher pro Monat. Würden alleine davon nur 50 Prozent die Startseite besuchen, könnten monatlich über 2,6 Terabyte an übertragenden Daten eingespart werden.</p>
<h4>Bilder komprimieren</h4>
<p>Bei der Komprimierung von Bildmaterial muss man zwischen zwei verschiedenen Verfahren unterscheiden. Die verlustfreie Komprimierung (<a href="http://en.wikipedia.org/wiki/Lossless_compression">lossless</a>) zeichnet sich dadurch aus, dass das Bild in seiner Qualität komplett unverändert bleibt. Ein Reduzierung der Dateigröße ist dennoch durch geschickte Kompression sowie das Entfernen unnötige Meta-Informationen möglich. Hingegen geht die verlustbehaftete Kompression (<a href="http://en.wikipedia.org/wiki/Lossy_compression">lossy</a>) noch einen Schritt weiter. So werden beispielsweise Farbwerte ausfindig gemacht, die sich nur sehr marginal unterscheiden und für das Auge kaum sichtbar angeglichen werden können. Dadurch enthält die Bilddatei weniger Informationen und kann besser komprimiert werden.</p>
<p>Ein Bild-Komprimierung ist im kleinen Rahmen problemlos mit Online-Tools wie <a href="https://tinypng.com/">tinypng.com</a> (für PNGs) oder <a href="https://tinyjpg.com/">tinyjpg.com</a> (für JPGs) möglich. Nach dem Hochladen seiner Originaldatei erhält man innerhalb weniger Sekunden eine optimierte Version. Gerade bei PNGs sind Einsparungen bei der Dateigröße höher als 50 Prozent keine Seltenheit. Professionelle Webentwickler können hier wieder einen Schritt weiter gehen und den Komprimierungsprozess in ihren Task Runner integrieren. Für Grunt steht beispielsweise das <a href="https://github.com/gruntjs/grunt-contrib-imagemin">Imagemin-Plugin</a> zur Verfügung.</p>
<div id="attachment_1011" style="width: 810px" class="wp-caption alignnone"><img class="size-large wp-image-1011" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.59.30-1024x383.png" alt="Mit tinypng.com und tinyjpg.com sind teilweise erhebliche Einsparungen möglich!" width="800" height="299" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.59.30-1024x383.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-10.59.30-620x232.png 620w" sizes="(max-width: 800px) 100vw, 800px" /><p class="wp-caption-text">Mit tinypng.com und tinyjpg.com sind teilweise erhebliche Einsparungen möglich!</p></div>
<p>Idealerweise sollte direkt im ersten Schritt überprüft werden, ob das verwendete Bildformat wirklich das beste ist. Gerade bei großen Fotos lässt sich mit JPGs eine wesentlich kleinere Datei erzielen als mit PNGs. Dies ist aber keinefalls in Stein gemeißelt, weshalb eine kurze Überprüfung nie schaden kann.</p>
<h4>Bilder in der richtigen Auflösung ausliefern</h4>
<p>Ein Problem, welches otto.de ebenfalls betrifft, ist die Auslieferung von Bildern in zu hohen Auflösungen. Beispielsweise werden große Slider-Bilder im Kopfbereich in der Breite von 1920 Pixeln angefordert, obwohl sie auf den meisten Desktop-Rechnern nur mit einer Breite von 960 Pixeln eingebunden werden. Hier werden schnell mehr als hundert Kilobyte umsonst übertragen.</p>
<div id="attachment_1012" style="width: 854px" class="wp-caption alignnone"><img class="size-full wp-image-1012" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-11.01.16.png" alt="Das Bild auf otto.de wird mit 1920 Pixeln vom Server angefordert, aber nur in einer Größe von 880 Pixeln angezeigt." width="844" height="338" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-11.01.16.png 844w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2015-05-05-um-11.01.16-620x248.png 620w" sizes="(max-width: 844px) 100vw, 844px" /><p class="wp-caption-text">Das Bild auf otto.de wird mit 1920 Pixeln vom Server angefordert, aber nur in einer Größe von 880 Pixeln angezeigt.</p></div>
<p>Natürlich ist die korrekte Auslieferung von Bildern durch Responsive Webdesign, sehr fluide Layouts und hochauflösende Bildschirme (Stichwort “Retina”) nicht leichter geworden. Doch hier springt seit kurzem das <a href="http://blog.kulturbanause.de/2014/09/responsive-images-srcset-sizes-adaptive/">&lt;picture&gt;-Element</a> in die Presche, für das bereits sehr gute Javascript-Polyfills existieren. Dies im Zusammenspiel mit einem Image Server erlaubt auch großen Online-Shops und Webseiten das nahezu pixelperfekte Ausliefern von Bilddaten.</p>
<h4>Base64-Zeichenketten verwenden</h4>
<p>Gerade bei sehr kleinen und nur einmalig verwendeten Grafiken unter einem Kilobyte macht es meistens Sinn, diese nicht als extra Bilddatei vom Server zu laden. Im Zuge der obersten Pagespeed-Prämisse, http-Requests zu reduzieren, bietet sich eine Einbettung als <a href="http://de.wikipedia.org/wiki/Data-URL">Data-URL</a> beziehungsweise Base64-Zeichenkette an. Dabei wird die reine Bilddatei quasi base64-kodiert und anschließend als Einzeiler direkt im &lt;img&gt;-Element oder als CSS-Hintergrund eingebunden. So wird zwar das initiale HTML-Dokument oder die CSS-Datei größer, der eingesparte http-Request wiegt dies aber in den allermeisten Fällen wieder auf.</p>
<p>Um Base64-Bilder zu generieren gibt es dutzende Online-Tools wie <a href="http://www.base64-image.de/">base64-image.de</a>. Der Profi wird wahrscheinlich eher direkt zu Photoshop-Plugins wie <a href="http://pnghat.madebysource.com/">PNG Hat</a> greifen, welches einen direkten Export von Ausschnitten oder einzelnen Ebenen auf Knopfdruck ermöglicht.</p>
<h4>CSS-Sprites einsetzen</h4>
<p>Auch wenn die guten alten <a href="http://www.torbenleuschner.de/blog/544/website-speed-sprites/">CSS-Sprites</a> in den letzten Jahren durch das Aufkommen von Icon-Fonts oder Retina-Versionen etwas an Bedeutung verloren haben, so sind sie nach wie vor ein solides Werkzeug der Pagespeed-Optimierung. Grob gesagt werden bei dieser Technik mehrere einzelne Grafiken in einer einzigen großen Bildatei platziert. Über ein CSS-Hintergrundbild und die Eigenschaft background-position lassen sich die einzelnen Grafiken dann innerhalb der Bilddatei wieder getrennt ansteuern beziehungsweise im Frontend ausgeben. So sind für ein eigenes Icon-Set von beispielsweise 40 Icons nicht mehr 40 http-Requests notwendig, sondern nur noch ein einziger.</p>
<h4>Mit LazyLoading Bilder nachladen</h4>
<p>Geschicktes und sauber funktionierendes <a href="http://de.wikipedia.org/wiki/Lazy_Loading">LazyLoading</a> erfordert bei großen Projekten zwar allerlei technische Raffinesse, kann die Ladegeschwindigkeiten dafür aber auf ein neues Level heben. Dieser Begriff beschreibt die Technik, Bild-Dateien erst vom Server anzufordern, sobald der Benutzer im Begriff ist, sie wirklich zu sehen. In der Regel wird darunter verstanden, dass Bilder, die beim Scrollen in den sichtbaren Bereich (Viewport) gelangen, erst dann geladen werden.</p>
<p>Mit etwas Aufwand lässt sich diese Technik aber noch weiter perfektionieren. Warum sollte beispielsweise ein großer Kopf-Slider bereits beim Seitenaufruf alle zehn Bilder laden und nicht erst das jeweils vorherige oder nächste, sobald der Besucher die Maus über die jeweilige Pfeil-Navigation bewegt hat?</p>
<p>Für kleinere Projekte gibt es hingegen bereits fertige jQuery-Plugins wie <a href="https://github.com/luis-almeida/unveil">unveil.js</a>, die einen unkomplizierten Einstieg in das Thema ermöglichen.</p>
<h3>Kritische Ressourcen prioritisieren</h3>
<p>Das Prioritisieren von kritischen Ressourcen beziehungsweise das nicht blockierte Laden von above-the-fold-Inhalten stellt sicherlich die Königsdisziplin der Pagespeed-Optimierung dar. Gleichzeitig ist es auch <a href="https://developers.google.com/speed/docs/insights/BlockingJS">der PageSpeed Insights &#8211; Hinweis</a>, der für die meisten Webseiten-Betreiber schier unlösbar scheint. Grob gesagt beschreibt dieser Punkt, dass Javascript- und CSS-Code, der für den sofort sichtbaren Bereich einer Website benötigt wird, auch unmittelbar zur Verfügung stehen sollte. Code, der hingegen nicht kritisch ist, muss in der Lade-Reihenfolge weiter hinten platziert werden oder im Idealfall sogar asynchron, also erst nach dem Laden aller anderen Ressourcen, vom Server angefordert werden.</p>
<p>Was sich in der Theorie erstmal nicht allzu schwierig anhört, stellt selbst erfahrene Webentwickler in der Praxis vor einige Probleme. Zuerst ist auszumachen, was man auf der eigenen Webseite eigentlich unter dem sofort sichtbaren Bereich versteht. Geht man beispielsweise von einem Notebook oder einem 27 Zoll iMac aus? Wie sieht es auf Smartphones oder Tablets aus? Und haben verschiedene Seitentypen nicht auch unterschiedliche sofort sichtbare Bereiche? Eine pauschale Antwort lässt sich hier auf keinen Fall finden. Manchmal darf und muss die Antwort auch sein, an dieser Stelle auf eine weitere Optimierung zu verzichten.</p>
<p>Wer hingegen weniger Probleme bei der Herausarbeitung der sofort sichtbaren Bereiche hat, stößt schnell auf technische Hürden. Eine komplette Zusammenlegung aller CSS- und Javascript-Dateien, wie weiter oben im Artikel empfohlen, funktioniert nun nämlich nicht mehr. Vielmehr müssen die Dateien jeweils in kritisch und nicht kritische Bereich aufgeteilt werden. Gerade bei Javascript-Dateien ist dies leichter gesagt als getan. Funktionalitäten, die das Rendering des sofort sichtbaren Bereiches beeinflussen, müssen hierfür nicht selten in natives Javascript zurückverwandelt werden. Schließlich kann schlecht auf das fertige Laden der großen jQuery-Bibliothek gewartet werden.</p>
<p>Im Falle von otto.de lässt sich dieses Problem gut am ersten Inhaltsbereich “Empfehlungen für Sie” veranschaulichen. Hier werden Inhalte erst nachträglich per AJAX eingefügt. Auch die Funktionalität des Sliders wird über Javascript sichergestellt. Dies bedeutet, dass der Bereich dem Webseiten-Besucher nicht sofort angezeigt werden kann, sobald zuständiges HTML und CSS verfügbar ist. Vielmehr muss darauf gewartet werden, dass die komplette externe Javascript-Datei geladen und ausgeführt wurde. Also spricht man von einer Javascript-Ressource, die das Rendering blockiert.</p>
<p>Zusammenfassend ist zu sagen, dass das Prioritisieren von kritischen Ressourcen zwar das letzte bisschen Ladegeschwindigkeit herauskitzeln kann, Webseiten-Betreiber aber häufig vor enorme technische Herausforderungen stellt. Unter Berücksichtigung aller anderen im Artikel erläuterten Optimierungsmaßnahmen dürfte man sich aber bereits eine sehr solide Basis mit vergleichsweise überdurchschnittlich hoher Ladegeschwindigkeit geschaffen haben.</p>
<p>&#8211;<br />
Dieser Artikel wurde am 5. Mai 2015 verfasst. Sämtliche Screenshots und Fallbeispiele wurden zu diesem Datum erfasst.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/1004/wie-bild-de-zalando-de-oder-otto-de-ihren-pagespeed-optimieren-koennten/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>VG Wort WordPress Plugin</title>
		<link>https://www.torbenleuschner.de/blog/922/vg-wort-wordpress-plugin/</link>
		<comments>https://www.torbenleuschner.de/blog/922/vg-wort-wordpress-plugin/#comments</comments>
		<pubDate>Tue, 07 Jan 2014 06:46:04 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[Wordpress Plugins]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=922</guid>
		<description><![CDATA[Zwischen den Festtagen kurz Twitter gecheckt, da kam mir ein Tweet von @KaiThrun unter die Augen. Er war auf der Suche nach einem WordPress Plugin zum besseren Arbeiten mit der VG Wort. Da ich intern bereits etwas ähnliches in Verwendung hatte, habe ich zwischen den Jahren nochmal fix meine IDE angeworfen und das Plugin etwas aufpoliert, so dass ich es nun hier im Blog zum Download anbieten kann. VG Was&#8230;? Erfahrungsgemäß ist die VG Wort vielen kein Begriff. Deshalb möchte ich [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Zwischen den Festtagen kurz Twitter gecheckt, da kam mir ein <a href="https://twitter.com/KaiThrun/status/415503951082295296" target="_blank">Tweet von @KaiThrun</a> unter die Augen. Er war auf der Suche nach einem <strong>WordPress Plugin</strong> zum besseren Arbeiten mit der <a href="http://www.vgwort.de/" target="_blank">VG Wort</a>. Da ich intern bereits etwas ähnliches in Verwendung hatte, habe ich zwischen den Jahren nochmal fix meine IDE angeworfen und das Plugin etwas aufpoliert, so dass ich es nun hier im Blog zum Download anbieten kann.</p>
<h3>VG Was&#8230;?</h3>
<p><img class="alignright size-full wp-image-925" alt="VG-Wort" src="https://www.torbenleuschner.de/blog/wp-content/uploads/VG-Wort-will-Leistungsschutzrecht-fuer-Presseverleger-einfordern-e1389019263923.jpg" width="300" height="77" />Erfahrungsgemäß ist die <strong>VG Wort</strong> vielen kein Begriff. Deshalb möchte ich an dieser Stelle ein paar Worte darüber verlieren. Die &#8222;<em>Verwertungsgesellschaft Wort</em>&#8220; wurde bereits 1958 ins Leben gerufen, um Verlage, aber auch freie Autoren zu unterstützen. Dazu werden bei jedem Verkauf von beispielsweise Druckern, Kopierern, DVD-Brenner oder auch bei der Ausstrahlung von Radio- und Fernsehsendungen Abgaben erhoben.</p>
<p>Diese Abgaben summieren sich pro Jahr immerhin auf einen dreistelligen Millionenbetrag. Zwischen allen Verlagen und Autoren, die sich aktiv bei der VG Wort angemeldet haben, wird der eingenommene Betrag Jahr für Jahr aufgeteilt. Und zwar zu fairen Anteilen nach Leser- bzw. Besucherzahlen getrennt.</p>
<p>Das spannende für uns #Neuländler: Auch mit einer oder mehreren Webseiten kann man sich bewerben. Wer also sowieso schon Banner- oder Affiliate-Werbung auf seinem Blog schaltet und über solide Besucherzahlen verfügt, für den kann sich <a href="http://www.vgwort.de/verguetungen/auszahlungen/texte-im-internet.html" target="_blank">eine Anmeldung</a> bei der VG Wort durchaus auszahlen. Verfügt man beispielsweise über 100 Artikel, die im Kalenderjahr mindestens 1.500 mal aufgerufen wurden und mehr als 1.800 Zeichen haben, so ist bereits mit vierstelligen Einnahmen zu rechnen.</p>
<p>Mehr zur VG Wort findet ihr unter anderem auf <a href="http://www.selbstaendig-im-netz.de/2012/10/01/einnahmequellen/vg-wort-als-einnahmequelle-make-money-monday/" target="_blank">Selbständig im Netz</a>&#8230;</p>
<h2>WordPress Plugin</h2>
<p>Da der Einbau der VG Wort Zählpixel nicht immer ganz trivial ist, habe ich mir, wie anfangs bereits erwähnt, für ein eigenes News-Projekt ein WordPress Plugin geschrieben. Die verfeinerte Version dessen möchte ich euch hier gerne zum Download bereitstellen:</p>
<p><a class="c2a" href="http://www.torbenleuschner.de/files/tl-vgwort.zip">Plugin herunterladen</a></p>
<h3> 1.) Plugin installieren</h3>
<p>Nachdem ihr das Plugin-Archiv frisch heruntergeladen habt, könnt ihr es entweder entpacken und dann per FTP auf den Server laden oder alternativ direkt über den WordPress ZIP-Auswahldialog hochladen. Anschließend muss das Plugin nur noch aktiviert werden und der Spaß kann beginnen.</p>
<p><img class="alignnone size-full wp-image-929" alt="vgwort-plugin-installieren" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-plugin-installieren.png" width="491" height="166" /></p>
<h3> 2.) Neue Zählmarken bestellen und Plugin konfigurieren</h3>
<p>In der WordPress-Seitenleiste dürfte nun der neue Menüpunkt <strong>VG Wort</strong> erschienen sein. Klickt ihr diesen an, landet ihr im Optionspanel des Plugins. Hier sollten nun die ersten Zählpixel hinterlegt werden&#8230;</p>
<p><a href="https://tom.vgwort.de/portal/metis/secure/editOrderPersonalizedPixel" target="_blank">Auf dieser Seite</a> könnt ihr (falls bei VG Wort angemeldet) neue Zählmarken bestellen. Dazu tragt als erstes einen Wert zwischen 1 und 100 in die Eingabemaske ein.</p>
<p>Die nachfolgende Seite ist für die Erstkonfiguration des Plugins ebenfalls sehr wichtig. Hier findet ihr nämlich eure <em>Zähldomäne</em>. Dies ist quasi der eindeutig mit eurem Konto verknüpfte VG Wort -Server. Für die Lauffähigkeit des Plugins ist es essentiell, dass ihr die angezeigte Domain im Konfigurationsmenü des Plugins eintragt.</p>
<p><img class="alignnone size-full wp-image-930" alt="vgwort-zaehldomaene" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-zaehldomaene.png" width="292" height="105" /></p>
<h3>3.) Bestellte Zählmarken hinterlegen</h3>
<p>Ist die <em>Zähldomäne</em> korrekt hinterlegt, so können als nächstes die bestellen Zählmarken in das Plugin eingepflegt werden. Dieser Schritt kann beliebig wiederholt werden. Natürlich kann man direkt zu Beginn 500 Zählmarken hinterlegen oder immer bei Bedarf nachpflegen. Sinkt die Anzahl der noch freien Zählmarken unter 10, so weist das Plugin prominent darauf hin.</p>
<p>Nachdem man die von der VG Wort generierte CSV-Datei mit den Zählmarken heruntergeladen hat, öffnet man sie mit einem Tool seiner Wahl (z.B. <em>Excel</em>,<em> OpenOffice Calc </em>oder <em>Google Drive</em>). Man sollte folgende Ansicht erhalten:</p>
<p><img class="alignnone size-full wp-image-931" alt="vgwort-codes" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-codes.png" width="521" height="231" /></p>
<p>Nun kopiert man zuerst sämtliche Datensätze aus der linken Spalte (ohne Überschrift) und fügt sie im Plugin in die Textbox mit der Überschrift <em>Öffentlicher Identifikationscode</em> ein. Die rechte Spalte kommt dementsprechend unter <em>Privater Identifikationscode</em>. Kurz überprüfen und anschließend auf <em>Importieren</em> klicken.</p>
<p><img class="alignnone size-full wp-image-932" alt="vgwort-insert" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-insert.png" width="700" height="289" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-insert.png 700w, https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-insert-620x255.png 620w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Ist alles glatt gelaufen, sollte man nun unten eine Übersicht der verfügbaren Zählmarken sehen. Natürlich kann man sich hier von Zeit zu Zeit auch einen Überblick verschaffen, wie viele Zählmarken noch frei sind.</p>
<p><img class="alignnone size-full wp-image-933" alt="vgwort-uebersicht" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-uebersicht.png" width="503" height="224" /></p>
<h3>4.) Plugin arbeiten lassen</h3>
<p>Dieser Part ist der einfachste, denn aktiv muss man nun nichts mehr tun. Jedesmal, wenn man einen neuen Beitrag veröffentlicht, werden diesem automatisch aus dem Pool der noch freien Zählmarken ein Pärchen aus öffentlichem und privatem Code zugeordnet. Technisch gesehen passiert dies auf Basis der beiden Custom Fields <em>vgwort-private</em> und <em>vgwort-public</em>.</p>
<p>Auch das Einfügen des Zählpixels im Frontend in Form eines 1&#215;1 Pixel großen Bildes geschieht vollautomatisch. Dazu wird bei der Ausgabe eines Artikels auf den WordPress-Filter <em>the_content</em> zugegriffen.</p>
<p><img class="alignnone size-full wp-image-935" alt="vgwort-ausgabe" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-ausgabe.png" width="730" height="61" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-ausgabe.png 730w, https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-ausgabe-620x51.png 620w" sizes="(max-width: 730px) 100vw, 730px" /></p>
<p>Wer das Plugin nutzen möchte und auch alte Artikel mit Zählpixeln nachrüsten will, der kann die beiden Custom Fields <em>vgwort-private</em> und <em>vgwort-public</em><em> </em>in den jeweiligen Artikeln  manuell setzen.</p>
<p><img class="alignnone size-full wp-image-936" alt="vgwort-customfields" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-customfields.png" width="603" height="238" /></p>
<h3>5.) Zählmarkenrecherche</h3>
<p><a href="http://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-recherche-wordpress.png"><img class="alignright size-thumbnail wp-image-937" alt="vgwort-recherche-wordpress" src="https://www.torbenleuschner.de/blog/wp-content/uploads/vgwort-recherche-wordpress-150x150.png" width="150" height="150" /></a>Wer bereits mit der <strong>VG Wort</strong> gearbeitet hat, der wird es kennen: Einmal im Jahr erhält man eine E-Mail, dass nun die Zählmarken aus dem Vorjahr abgerechnet werden können. Dazu stellt die VG Wort eine Übersicht der Zählpixel bereit, die jeweils den Mindestzugriff an Besuchern erreicht haben. Was danach kommt, ist eine extrem nervige und friemelige Arbeit.</p>
<p>Auch hier möchte das <strong>VG Wort WordPress Plugin</strong> einiges an Arbeit abnehmen. Unter dem Menüpunkt <em>Zählmarkenrecherche</em> stellt es nämlich eine Funktion zur Verfügung, mit der man sowohl nach öffentlichen als auch privaten Zählmarken suchen kann. Hier trägt man nun in der Regel den in der VG Wort Übersicht angezeigten privaten Code ein und erhält nach einem Klick auf <em>Suchen</em> detaillierte Informationen zum entsprechenden WordPress-Artikel. Diese Übersicht ist so eingerichtet, dass die wichtigsten von der VG Wort abgefragten Eigenschaften direkt ausgegeben werden, z.B. Artikel-Titel, Autor, Anzahl der Zeichen, &#8230;</p>
<p><a class="c2a" href="http://www.torbenleuschner.de/files/tl-vgwort.zip">Plugin herunterladen</a></p>
<p>Mehr muss an dieser Stelle gar nicht gesagt werden. Wem das Plugin gefällt, darf diesen Beitrag sehr gerne plussen, liken, tweeten, teilen und natürlich verlinken :-)</p>
<h2>Updates</h2>
<h3>Version 1.1</h3>
<p>Die Version 1.1 ist am 17. Januar 2014 erschienen und bietet die folgenden Verbesserungen:</p>
<ul>
<li>Einige Nutzer berichteten von kritischen Fehlern, die das Plugin unbenutzbar machten. Diese sollten nun behoben sein.</li>
<li>In den globalen Optionen lässt sich nun ein Zeichen-Limit einstellen. So werden Beiträge, die unter diesem Limit bleiben, erst gar nicht mit einem Zählpixel versorgt. Erweitert man solche Beiträge später um zusätzlichen Inhalt, wird nachträglich ein Zählpixel hinzugefügt, sobald genügend Zeichen vorhanden sind.</li>
<li>Beim Importieren neuer Zählmarken lässt sich nun festlegen, ob die Marken für das gesamte Projekt oder nur einen einzelnen Nutzer hinzugefügt werden sollen. Auf diesem Weg kann man für einzelne Autoren individuelle Zählmarken hinterlegen.</li>
<li>Beim Importieren neuer Zählmarken lässt sich nun zudem eine optionale Zähldomäne angeben. Diese Domäne wird dann nur für die neu hinzugefügten Zählmarken verwendet. Dies ist beispielsweise beim Einsatz der Autoren-Funktion notwendig, da sich die Zähldomänen von unterschiedlichen VG Wort Konten unterscheiden können.</li>
<li>Hinzugefügte, aber noch nicht genutzte Zählmarken können nun aus der Übersicht heraus gelöscht werden.</li>
<li>Es wurde eine Übersicht hinzugefügt, die die bereits verteilen Zählmarken auflistet. So erhält man einen schnellen Überblick und kann sich auf Wunsch weitere Details anzeigen lassen.</li>
</ul>
<h3>Wünsche &amp; Feature-Requests?</h3>
<p>Ihr habt noch eine Idee, wie ich das Plugin sinnvoll erweitern kann? Lasst es mich gerne in den Kommentaren wissen! :-)</p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/922/vg-wort-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>code.talks 2014 in Hamburg</title>
		<link>https://www.torbenleuschner.de/blog/990/code-talks-2014-in-hamburg/</link>
		<comments>https://www.torbenleuschner.de/blog/990/code-talks-2014-in-hamburg/#respond</comments>
		<pubDate>Sun, 22 Sep 2013 15:09:11 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[Privat]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=990</guid>
		<description><![CDATA[Am 9. und 10. Oktober findet die diesjährige (Web-)entwickler Konferenz code.talks 2014 in Hamburg statt. Im letzten Jahr ging das Format noch unter dem Namen Developer Conference an den Start. Dieser Begriff war den Veranstaltern aber nach eigenen Angaben zu generisch, weshalb man dieses Jahr unter einem neuen Namen lädt. Für mich wird es in diesem Jahr die erste Teilnahme sein. Ich hatte die Chance, eines der wenigen Blogger-Tickets zu einem reduzierten Preis zu ergattern. Das bedeutet, ich werde euch vor, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Am 9. und 10. Oktober findet die diesjährige (Web-)entwickler Konferenz <a href="http://www.codetalks.de/" target="_blank">code.talks 2014</a> in Hamburg statt. Im letzten Jahr ging das Format noch unter dem Namen <strong>Developer Conference</strong> an den Start. Dieser Begriff war den Veranstaltern aber nach eigenen Angaben zu generisch, weshalb man dieses Jahr unter einem neuen Namen lädt.</p>
<p><a href="http://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.03.41.png"><img class="alignnone size-large wp-image-991" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.03.41-1024x299.png" alt="Bildschirmfoto 2014-09-22 um 17.03.41" width="800" height="233" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.03.41-1024x299.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.03.41-620x181.png 620w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>Für mich wird es in diesem Jahr die erste Teilnahme sein. Ich hatte die Chance, eines der wenigen Blogger-Tickets zu einem reduzierten Preis zu ergattern. Das bedeutet, ich werde euch vor, nach und vor allem während der Konferenz mit spannenden Infos rund um die Vorträge und das Event versorgen. Am besagten Donnerstag und Freitag dürfte es also auf meinen sozialen Profilen etwas aktiver werden :-)</p>
<h2>Was erwartet die Besucher?</h2>
<p>In erster Linie hoffentlich <a href="http://www.codetalks.de/programm/" target="_blank">extrem spannende Vorträge</a> rund um das Thema Webentwicklung. Die nackten Fakten sprechen für sich: Auf 1.500 Teilnehmer kommen <a href="http://www.codetalks.de/speaker/" target="_blank">120 Speaker</a> in zwölf Tracks: Big Data (21), E-Commerce (4), IT Management (25), Infrastructure (33), Java (23), JavaScript (14), Mobile (10), New Technology (23), PHP (8), Ruby (3), Skalierung (16), und UX/Frontend (8).  Davon werden 90 Vorträge in deutscher Sprache gehalten, 18 auf Englisch.</p>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/4rn-RDXfRoE?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Unter den Speakern befinden sich unter anderem ein <a href="http://www.codetalks.de/session_post/the-javascript-stack-at-facebook/" target="_blank">Javascript-Entwickler von Facebook</a>, ein <a href="http://www.codetalks.de/session_post/natural-disaster-monitoring-with-wikipedia-and-google-maps/" target="_blank">Google-Entwickler</a>, ein <a href="http://www.codetalks.de/session_post/crosschannel-communication-at-ebay-kleinanzeigen/" target="_blank">Team-Leiter bei eBay</a> oder auch ein <a href="http://www.codetalks.de/session_post/guerrilla-software-design-doing-it-wrong-and-getting-it-right/" target="_blank">Programmierer von Stack Overflow</a>. Natürlich findet man unter den Vortragenden auch viele Selbständige, Freiberufler oder Unternehmer, deren Vortragsthemen nicht minder spannend klingen.</p>
<h3>Das Besondere? Die Location!</h3>
<p>Ohne jemals auf der <strong>Developer Conference </strong>bzw. der <b>code.talks</b> gewesen zu sein, glaube ich, dass die Veranstalter eine sehr spezielle <a href="http://www.codetalks.de/location/" target="_blank">Location</a> gefunden haben. Das <a href="https://plus.google.com/104160504460911630685" target="_blank">Cinemaxx Hamburg-Dammtor</a> lockt mit acht riesigen Kinosälen, bequemen Kinosesseln und all inclusive Popcorn &#8211; genial!</p>
<p><a href="http://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.06.02.png"><img class="alignnone size-large wp-image-993" src="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.06.02-1024x261.png" alt="Bildschirmfoto 2014-09-22 um 17.06.02" width="800" height="203" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.06.02-1024x261.png 1024w, https://www.torbenleuschner.de/blog/wp-content/uploads/Bildschirmfoto-2014-09-22-um-17.06.02-620x158.png 620w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>Abgerundet wird die Location natürlich durch die Tatsache, dass auf den großen Kinoleinwänden kein Detail des Vortrages verloren geht. Flächendeckendes WLAN und klimatisierte Räume tragen weiterhin zum Wohlbefinden der Konferenz-Teilnehmer bei.</p>
<h2>Ich bin gespannt&#8230;</h2>
<p>Ich blicke also gespannt auf die beiden Tage in Hamburg und freue mich in insgesamt 14 Vorträgen viel neues Wissen mitzunehmen. Für die folgenden habe ich mich übrigens entschieden:</p>
<ul>
<li>Build your own Event-Tracking: Messung und Analyse des Benutzerverhaltens in sehr großen Internet-Systemen zur Optimierung der User Experience</li>
<li>Optimierung der User Experience einer Mobilanwendung mit Machine Learning</li>
<li>Agiler Responsive Workflow</li>
<li>10 lessons learned while growing from 1 to 1000</li>
<li>Der Code zum Erfolg</li>
<li>Fragmented Web Design</li>
<li>OnConnectionLost: Das Leben einer Offline Web-Applikation</li>
<li>WebAPI – expand what the Web can do today</li>
<li>Entwicklung eines Entwicklers – Was kommt nach dem entwickeln?</li>
<li>Modern Web Application (In-)Security</li>
<li>Mit offener Kommunikation Projekte meistern</li>
<li>Was nicht passt wird responsive gemacht</li>
<li>Projekt Code University – Warum ich an einer modernen Ausbildung für Entwickler arbeite</li>
<li>E-Commerce Systeme gestern, heute und morgen</li>
</ul>
<p>Wie gesagt werde ich euch die beiden Tage über via Social Media und im Anschluss an die Konferenz über meinen Blog auf dem Laufenden halten!</p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/990/code-talks-2014-in-hamburg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google+ Beiträge per WordPress Plugin einbetten</title>
		<link>https://www.torbenleuschner.de/blog/886/google-beitrage-per-wordpress-plugin-einbetten/</link>
		<comments>https://www.torbenleuschner.de/blog/886/google-beitrage-per-wordpress-plugin-einbetten/#comments</comments>
		<pubDate>Mon, 09 Sep 2013 21:13:11 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[Google+]]></category>
		<category><![CDATA[Wordpress Plugins]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=886</guid>
		<description><![CDATA[Es ist soweit. Nachdem Twitter schon eine gefühlte Ewigkeit lang die Möglichkeit bietet, Tweets auf der eigenen Website oder dem eigenen Blog einzubetten, zog ja bekanntlich auch Facebook vor gut einem Monat nach und implementierte eine entsprechende Funktion. Damals stellte ich ein WordPress Plugin zur Verfügung, um die Facebook Embedded Posts bequem einzubetten. Seit wenigen Stunden ist nun auch das dritte große Soziale Netzwerk, Google+, mit von der Partie. Ähnlich wie bei den Facebook Beiträgen lassen sich auch Google+ Posts [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Es ist soweit. Nachdem Twitter schon eine gefühlte Ewigkeit lang die Möglichkeit bietet, Tweets auf der eigenen Website oder dem eigenen Blog einzubetten, zog ja bekanntlich auch Facebook vor gut einem Monat nach und implementierte eine entsprechende Funktion. Damals stellte ich ein <a title="WordPress Plugin zum Einbetten von Facebook Posts" href="http://www.torbenleuschner.de/blog/865/facebook-posts-wordpress-plugin/">WordPress Plugin</a> zur Verfügung, um die Facebook Embedded Posts bequem einzubetten.</p>
<p>Seit wenigen Stunden ist nun auch das dritte große Soziale Netzwerk, Google+, mit von der Partie. Ähnlich wie bei den Facebook Beiträgen lassen sich auch Google+ Posts mit Hilfe eines kurzen Code Snippets in jeder beliebigen externen Webseite anzeigen. Dabei gelten ungefähr die selben Richtlinien wie beim blauen Konkurrenten: Beiträge, die nur mit bestimmten Kreisen, also nicht öffentlich, geteilt wurden, können logischerweise nicht eingebettet werden.</p>
<h2>So sieht ein eingebetteter Google+ Post aus</h2>
<p>Hier ein kurzes Beispiel, wie ein eingebundener Beitrag aussehen könnte:</p>
<p>[gp-post href=&#8220;https://plus.google.com/114421677831789165567/posts/5SLVJraiZ4P&#8220;]</p>
<h2>Was ist zu beachten?</h2>
<p>Möchte man Google+ Beiträge auf seiner Webseite oder Blog einbetten, muss man einige Richtlinien beachten. Beispielsweise muss die verwendete Post-URL korrekt sein, da es hier unterschiedliche Varianten gibt.</p>
<p>Korrekt ist:</p>
<ul>
<li><em>https://plus.google.com/110174288943220639247/posts/cfjDgZ7zK8o</em></li>
</ul>
<p><strong>Nicht</strong> korrekt ist:</p>
<ul>
<li><em>https://plus.google.com/+LarryPage/posts/MtVcQaAi684</em></li>
<li><em>https://plus.google.com/u/0/106189723444098348646/posts/MtVcQaAi684</em></li>
</ul>
<p>Außerdem gibt es Stand heute einige Einschränkungen hinsichtlich der verwendbaren Formate.</p>
<p>In Ordnung sind:</p>
<ul>
<li><span style="line-height: 13px;">Beiträge mit Bildern</span></li>
<li>Beiträge mit Videos</li>
<li>Beiträge mit Links zu einer Community</li>
</ul>
<p><strong>Nicht </strong>in Ordnung sind:</p>
<ul>
<li><span style="line-height: 13px;">Beiträge innerhalb einer Community</span></li>
<li>Beiträge, die auf eine Google Apps Domain beschränkt sind</li>
<li>Private Beiträge</li>
<li>Event Beiträge</li>
<li>Hangout on Air Beiträge</li>
</ul>
<h2>Die Google+ Embedded Posts verwenden</h2>
<p>Wie bereits eingangs geschrieben, stellt Google Webseitenbetreibern ein kleines Code Snippet zur Verfügung, um die Beiträge auf der eigenen Webseite einzubetten. Dies ist vergleichbar mit dem Einbau des +1 Buttons. In der Google Entwicklerdokumentation findet man hierzu einen <a href="https://developers.google.com/+/web/embedded-post/" target="_blank">englischsprachigen Hilfe-Artikel</a>.</p>
<p>So könnte es beispielsweise in der Praxis aussehen:</p>
<script src="https://gist.github.com/6501373.js"></script>
<h2>WordPress Plugin zum schnellen Einbetten</h2>
<p>Wer WordPress als CMS oder Blogsystem einsetzt, kann sich hier direkt das (hoffentlich erste) <strong>Google+ Embedded Posts WordPress Plugin</strong> herunterladen.</p>
<p>Das Einbetten der Beiträge geht damit noch schneller von der Hand. Nach der Aktivierung steht euch in Artikeln und Seiten der Shortcode <em>gp-post</em> zur Verfügung, an den ihr den Parameter <em>href</em> übergeben könnt. Hier einmal ein vollständiges Beispiel, dass die Funktionsweise recht gut veranschaulichen sollte:</p>
<script src="https://gist.github.com/6501452.js"></script>
<p>An die benötigte URL kommt man übrigens sehr einfach, in dem man bei einem Beitrag auf den jeweiligen Zeitstempel klickt. Nun öffnet sich der Post in einem neuen Tab und ihr könnt die URL aus der Browser-Adresszeile kopieren. Aber wie gesagt darauf achten, dass der Beitrag den Richtlinien entspricht bzw. öffentlich ist.</p>
<p>Aktuell könnt ihr das Plugin von meinem Server oder von GitHub herunterladen. Anschließend den entpackten Ordner in euer WordPress Plugin Verzeichnis hochladen und über das Backend aktivieren.</p>
<p><a class="c2a share" href="http://www.torbenleuschner.de/files/google-embedded-posts.zip">Plugin direkt herunterladen</a></p>
<p><a class="c2a" href="https://github.com/TorbenL/Google-Plus-Embedded-Posts" target="_blank">Plugin auf GitHub</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/886/google-beitrage-per-wordpress-plugin-einbetten/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin zum Einbetten von Facebook Posts</title>
		<link>https://www.torbenleuschner.de/blog/865/facebook-posts-wordpress-plugin/</link>
		<comments>https://www.torbenleuschner.de/blog/865/facebook-posts-wordpress-plugin/#comments</comments>
		<pubDate>Thu, 01 Aug 2013 07:10:28 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Wordpress Plugins]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=865</guid>
		<description><![CDATA[Seit gestern Abend 19:00 Uhr stellt Facebook Entwicklern eine neue Funktion bereit, um Facebook Beiträge per Code Snippet auf die eigene Webseite zu bringen. Das Verfahren zum Einbetten der Beiträge folgt dabei in etwa dem selben Schema wie dem Einbinden des Like Buttons oder der Facebook Kommentare. Twitter schuf diese Möglichkeit bereits vor längerer Zeit und immer häufiger sieht man Artikel oder Blog-Beiträge, die durch die Tweets berühmter Persönlichkeiten angereichert werden. Im Facebook HQ wird man sich gedacht haben, dass [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Seit gestern Abend 19:00 Uhr <a href="https://developers.facebook.com/blog/post/2013/07/31/introducing-embedded-posts/" target="_blank">stellt Facebook Entwicklern eine neue Funktion bereit</a>, um Facebook Beiträge per Code Snippet <a href="http://kaithrun.de/social-media/facebook/facebook-postings-webseiten-einbetten/" target="_blank">auf die eigene Webseite zu bringen</a>. Das Verfahren zum Einbetten der Beiträge folgt dabei in etwa dem selben Schema wie dem Einbinden des Like Buttons oder der Facebook Kommentare. Twitter schuf diese Möglichkeit bereits vor längerer Zeit und immer häufiger sieht man Artikel oder Blog-Beiträge, die durch die Tweets berühmter Persönlichkeiten angereichert werden.</p>
<p>Im Facebook HQ wird man sich gedacht haben, dass die Möglichkeit, Facebook Beiträge zu integrieren für den ein oder anderen Webseiten-Betreiber ebenfalls interessant sein dürfte. Prinzipiell folgt man auch hier einem einfachen Schema. Alles was zum Einbinden benötigt wird ist ein kurzes Code Snippet so wie die URL des jeweiligen Facebook Posts. Einen kleinen Haken hat die Sache dann aber doch; ähnlich wie bei Twitter können natürlich nur öffentlich gepostete Beiträge angezeigt werden. Bei Facebook werden aber mittlerweile (zum Glück) die meisten privaten Nachrichten nicht mehr öffentlich, sondern nur im begrenzten Rahmen geteilt. Vorwiegend dürfte die neue Funktion zum Einbetten von Posts also genutzt werden, um die Beiträge von Facebook (Unternehmens-) Seiten zu teilen. Diese posten nämlich logischerweise fast immer öffentlich.</p>
<h3>Beispiel gefällig?</h3>
<p>Hier mal ein kurzes Beispiel, wie das ganze aussehen könnte:</p>
<p>[fb-post href=&#8220;https://www.facebook.com/torbenleuschner.de/posts/568421526533431&#8243;]</p>
<h2>WordPress Plugin herunterladen</h2>
<p>Ich habe mir gedacht, es wäre ganz nett, wenn Blogger und Webseitenbetreiber direkt zum Start der neuen Facebook Funktion ein WordPress Plugin zur Verfügung hätten, mit dem sie schnell und einfach die Beiträge in Artikeln oder Seiten integrieren können. Und hier ist es, ein WordPress Plugin zum Einbetten von Facebook Posts mit dem Namen <strong>Facebook Embedded Posts</strong>.</p>
<p>Das Einbinden ist denkbar simpel. Über den Shortcode <em>fb-post</em> und den dazugehörigen Parameter <em>href</em> lässt sich die Funktion innerhalb von WordPress Artikeln, Seiten oder Widgets beliebig nutzen. Hier ein vollständiges Beispiel:</p>
<script src="https://gist.github.com/6129053.js"></script>
<p>Wer übrigens noch nicht weiß, wie man an die URL zu einem Facebook Beitrag kommt, auch dies ist schnell erklärt. Unter jedem Beitrag findet ihr immer eine verlinkte Zeitangabe (z.B. &#8222;vor 4 Minuten&#8220;). Bei einem Klick auf diese öffnet sich der Beitrag unter der jeweiligen URL in einem eigenen Tab.</p>
<p>Das Facebook WordPress Plugin könnt direkt von meinem Server herunterladen. Die gezippte Datei muss lediglich entpackt und der Ordner anschließend in das <em>plugin</em> Verzeichnis eurer WordPress Installation verschoben werden. Alternativ könnt ihr es auch direkt über das offizielle WordPress Plugin Verzeichnis laden oder von dort direkt installieren.</p>
<p><a class="c2a share" href="http://www.torbenleuschner.de/files/fb-embedded-posts.zip">Plugin direkt als ZIP-Datei herunterladen</a></p>
<p><a class="c2a" href="http://wordpress.org/plugins/facebook-embedded-posts/" target="_blank">Plugin im WordPress Plugin-Verzeichnis</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/865/facebook-posts-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Aktionen und Scroll-Verhalten auf einer Single Page mit Google Analytics überwachen</title>
		<link>https://www.torbenleuschner.de/blog/844/aktionen-und-scroll-verhalten-auf-einer-single-page-uberwachen/</link>
		<comments>https://www.torbenleuschner.de/blog/844/aktionen-und-scroll-verhalten-auf-einer-single-page-uberwachen/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 07:43:59 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Online-Marketing]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=844</guid>
		<description><![CDATA[Zur Zeit sind die so genannten Single Pages ja wirklich schwer in Mode. Zum Beispiel gab es erst vor zwei Tagen beim seo-book.de einen spannenden Beitrag, der der Frage nachging, ob eine Single Page wohl besser für das Google Ranking sei? Auch ich habe Anfang dieser Woche den Relaunch meines Portfolios veröffentlicht und dabei wieder auf ein Single Page Webdesign gesetzt. Ich möchte heute an dieser Stelle nicht der Frage nachgehen, ob und wann eine Single Page einer Variante mit [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Zur Zeit sind die so genannten Single Pages ja wirklich schwer in Mode. Zum Beispiel gab es erst vor zwei Tagen beim <a href="http://www.seo-book.de/allgemein/die-seo-frage/single-bzw-one-page-besser-fur-seo-als-mehrere-unterseiten" target="_blank">seo-book.de</a> einen spannenden Beitrag, der der Frage nachging, ob eine Single Page wohl besser für das Google Ranking sei? Auch ich habe Anfang dieser Woche den Relaunch meines <a href="http://www.torbenleuschner.de/">Portfolios</a> veröffentlicht und dabei wieder auf ein Single Page Webdesign gesetzt.</p>
<p>Ich möchte heute an dieser Stelle nicht der Frage nachgehen, ob und wann eine Single Page einer Variante mit mehreren Unterseite vorzuziehen ist oder welche Vor- und Nachteile im Bezug auf die Suchmaschinenoptimierung entstehen. Vielmehr möchte ich etwas in den Bereich Online Marketing und Besucher-Tracking abdriften.</p>
<h2>Kein Google Analytics? Keine Informationen zum Besucherverhalten!</h2>
<p>Viele Entscheider wird es wahrscheinlich abschrecken, dass man bei Single Pages keine echten Informationen über das Besucherverhalten erhält. Zwar kann man Google Analytics oder ein vergleichbares Tool natürlich einbetten, bekommt dann aber nur Kennzahlen über Verweildauer oder Absprungrate angezeigt.</p>
<p>Dabei wäre es für den Seitenbetreiber doch viel interessanter zu erfahren, wie der Nutzer auf der Seite scrollt, ob zum Beispiel das Kontaktformular angezeigt wird oder an welcher Stelle die meisten Nutzer die Seite verlassen. Gerade der letzte Punkt bietet eine hervorragende Möglichkeit, nach und nach die größten Schwachstellen auf der Single (Landing) Page zu identifizieren und zu optimieren.</p>
<h2>Simples Script zum Erfassen des Scroll-Verhaltens</h2>
<p>Die gute Nachricht: Das Erfassen des Scroll-Verhaltens der Nutzer ist nicht so komplex wie vielleicht vermutet. Auf Basis des <a href="http://api.jquery.com/" target="_blank">jQuery-Frameworks</a> und der Analytics Methode <a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApi_gaq#_gaq.push" target="_blank">_gaq.push()</a> habe ich ein kleines Script vorbereitet, welches ihr mit minimalem Anpassungen auf euren Single Pages verwenden könnt:</p>
<script src="https://gist.github.com/5779912.js"></script>
<h3>HTML-Quellcode im Detail</h3>
<p>Der obere Abschnitt zeigt das stark vereinfachte HTML-Dokument der Single Page. Hier gibt es nicht besonders viel zu erklären. Von Zeile 7 bis 17 wird der normale Google Analytics Code eingebunden. Neben einigen kleinen CSS-Formatierungen von Zeile 19 bis 27 binden wir in Zeile 46 noch das jQuery-Framework in der aktuellsten Version ein. Eine Zeile dadrunter laden wir dann die <em>script.js</em>, in der die eigentliche Arbeit verrichtet wird.</p>
<p>Wichtig ist nur, dass man den Aufbau der <em>section</em>-Elemente versteht. Dies können natürlich auch <em>div</em> oder <em>article</em> &#8211; Elemente sein, wichtig ist nur, dass die Abschnitte auf eurer Single Page, die später getrackt werden sollen, auch über eindeutige Klassen verfügen. In unserem Beispiel sind das <em>section-a</em>, <em>section-b</em>, <em>section-c</em> und <em>section-d</em>.</p>
<h3>Javascript-Quellcode im Detail</h3>
<p>Nun gucken wir uns die <em>script.js</em> im Detail an:</p>
<ul>
<li><span style="line-height: 13px;"><strong>Zeile 1<br />
</strong>Wir verwenden die jQuery document.ready()-Funktion um sicherzustellen, dass das DOM komplett zur Verfügung steht.</span></li>
<li><strong>Zeile 2</strong><br />
Wir initialisieren eine leere Variable, in der wir später speichern, welcher Bereich auf der Single Page zuletzt angezeigt wurde. Dies ist wichtig, damit später nicht bei jedem Scrollen innerhalb eines Bereiches ein neuer Pageview an Google Analytics übermittelt wird.</li>
<li><strong>Zeilen 3 bis 8</strong><br />
Dieses Javascript-Objekt ist theoretisch der einzige Bereich, den ihr bei Verwendung des Script auf eure Bedürfnisse anpassen müsst. Die jeweiligen Schlüssel (z.B. <em>section-b</em>) stehen dabei für die Klassen der Elemente im HTML-Dokument. Die zugehörigen Wert (z.B. <em>/bereich-b</em>) bezeichnen hingegen die URL, welche als Pageview an Google Analytics übermittelt wird. Hier könnte man beispielsweise auch <em>/kontakt.html </em>eintragen, wichtig ist aber das führende &#8222;<em>/</em>&#8222;. Außerdem sollte das im HTML-Dokument letzte Element im Objekt zuerst genannt werden und so weiter.</li>
<li><strong>Zeilen 28 bis 29</strong><br />
Ein kleiner Sprung innerhalb des Dokuments. An dieser Stelle rufen wir anfangs die Funktion <em>scrollTrackPageview()</em> direkt auf. Dies ist empfehlenswert, um direkt zu Beginn die Variable <em>tracking_active</em> korrekt zu setzen. In Zeile 29 weisen wir den Aufruf der Funktion dem <a href="http://api.jquery.com/scroll/" target="_blank">jQuery scroll-Event</a> zu. Somit wird bei jedem Scroll-Vorgang des Nutzers unsere Funktion <em>scrollTrackPageview()</em> aufgerufen.</li>
<li><strong>Zeilen 11 bis 17</strong><br />
Innerhalb dieser Schleife gehen wir das <em>tracking</em>-Objekt durch und überprüfen, ob sich der Viewport aktuell auf dem entsprechenden Bereich befindet. Dazu nutzen wir die beiden jQuery-Funktionen <a href="http://api.jquery.com/scrollTop/" target="_blank">scrollTop()</a> und <a href="http://api.jquery.com/offset/" target="_blank">offset()</a>. Das Ergebnis in Form der Pageview-URL speichern wir in der Variablen <em>section</em>.</li>
<li><strong>Zeilen 19 bis 20</strong><br />
An dieser Stelle überprüfen wir, ob die <em>section</em>-Variable korrekt ermittelt wurde und ob deren Wert ungleich mit <em>tracking_active</em> ist. Falls nicht, wird die Ausführung der weiteren Funktion unterbrochen und es passiert nichts.</li>
<li><strong>Zeile 22</strong><br />
Die wohl wichtigste Zeile. Wir werden <em>_gaq.push()</em> um den &#8222;virtuellen&#8220; Pageview an Google Analytics zu übermitteln.</li>
<li><strong>Zeile 23</strong><br />
Wer die korrekte Funktionsweise des Script überprüfen möchte, kann diese Zeile entkommentieren. Dann wird bei jedem Aufruf von <em>_gaq.push() </em>auch ein Eintrag in die Browser-Konsole geschrieben.</li>
</ul>
<h2>Bonus 1: Pageview beim Abschicken eines AJAX-Kontaktformulares</h2>
<p>Natürlich könnt ihr auch andere Events auf diese Weise erfassen, beispielsweise das Abschicken eines Kontaktformulares oder einer Registrierung per AJAX. Dies bietet sich vor allem an, um die Konversion-Rate des Vorgangs zu erfassen.</p>
<p>Im folgenden der diesmal unkommentiere Quellcode. Wer den Vorgang in der <em>script.js</em> verstanden hat, wird hiermit auch zurecht kommen ;-)</p>
<script src="https://gist.github.com/5780114.js"></script>
<h2>Bonus 2: Bestimmte Events in Google Analytics als Konversion kennzeichnen</h2>
<p>Mit Google Analytics ist es sehr leicht möglich, aus den aufgezeichneten Pageviews ein simples Konversion-Tracking zu erstellen. Dazu wechselt man in der Analytics Navigation auf den Punkt &#8222;Conversions&#8220;, dann &#8222;Ziele&#8220;, dann &#8222;Übersicht&#8220; und dann auf &#8222;Ziele definieren&#8220;. Hier nun ein weiterer Klick auf &#8222;Ziel erstellen&#8220;.</p>
<p>Den Namen des neuen Ziel kann man natürlich frei wählen, wie zum Beispiel &#8222;Kontaktformular abgeschickt&#8220;. Unter der Auswahl &#8222;Typ&#8220; wählt man schließlich &#8222;Ziel&#8220; aus.</p>
<p><img class="alignnone size-full wp-image-848" alt="analytics conversion tracking" src="https://www.torbenleuschner.de/blog/wp-content/uploads/analytics-conversion-tracking.png" width="568" height="222" /></p>
<p>Im nächsten Schritt trägt man nun unter &#8222;Ziel&#8220; den URL-Part genau so ein, wie wir in vorhin im Script definiert haben. Also z.B. <em>/section-b</em>. Optional kann man noch Werte oder Trichter zuweisen und mit einem Klick auf &#8222;Ziel erstellen&#8220; wurde das Konversion-Tracking auch schon angelegt.</p>
<p>Das ganze funktioniert natürlich wie erwähnt nicht nur für Events wie das Abschicken eines Formulares, sondern es kann auch ein Konversion-Tracking für das Scrollen an einen bestimmten Punkt aufgesetzt werden.</p>
<p><strong>Ich hoffe der Beitrag hat euch gefallen. Falls etwas unverständlich ist, nutzt einfach die neue Google+ Kommentarfunktion :)</strong></p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/844/aktionen-und-scroll-verhalten-auf-einer-single-page-uberwachen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Neue Google+ Kommentarfunktion einbauen</title>
		<link>https://www.torbenleuschner.de/blog/822/neue-google-kommentarfunktion-einbauen/</link>
		<comments>https://www.torbenleuschner.de/blog/822/neue-google-kommentarfunktion-einbauen/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 09:15:38 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[Online-Marketing]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=822</guid>
		<description><![CDATA[Facebook bietet dieses Features schon lange an: Ein Widget per iframe auf der eigenen Seite einbauen, dass dann im bekannten Facebook-Stil ein Kommentieren über die eigene Webseite ermöglicht und die Kommentare auf Wunsch auch gleich noch den Freunden mitteilt. Auch Google+ zieht nun nach und hat seinen Dienst &#8222;Blogger&#8220; mit einer ähnlichen Funktion ausgestattet. Google schreibt dazu folgendes: Eure Blog-Leser haben nun die Möglichkeit, ihre Kommentare für alle oder nur für ihre Kreise auf Google+ zu veröffentlichen. Beim Durchlesen können [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Facebook bietet dieses Features schon lange an: Ein Widget per iframe auf der eigenen Seite einbauen, dass dann im bekannten Facebook-Stil ein Kommentieren über die eigene Webseite ermöglicht und die Kommentare auf Wunsch auch gleich noch den Freunden mitteilt. Auch Google+ zieht nun nach und hat seinen Dienst &#8222;Blogger&#8220; <a href="http://www.googlewatchblog.de/2013/04/google-kommentare-googleplus-blogger/" target="_blank">mit einer ähnlichen Funktion ausgestattet</a>.</p>
<p>Google schreibt dazu folgendes:</p>
<blockquote><p>Eure Blog-Leser haben nun die Möglichkeit, ihre Kommentare für alle oder nur für ihre Kreise auf Google+ zu veröffentlichen. Beim Durchlesen können die Leser außerdem festlegen, ob sie alle Kommentare, nur die neuesten oder nur die von Personen aus ihren Kreisen sehen möchten.<br />
Generell gilt, dass ihr und eure Leser jeweils nur die Kommentare sehen können, für die eine Berechtigung vorliegt. Damit wird nicht nur ein gezielteres Teilen von Inhalten und Kommentaren ermöglicht, sondern potenziell auch mehr Traffic zu eurem Blog generiert.</p></blockquote>
<p>Laut diversen Quellen befindet sich die Google+ Kommentarfunktion bislang noch in einer Testphase und wurde deshalb auch nur für den <a href="http://www.blogger.com/start?hl=de" target="_blank">Blogger-Dienst</a> freigeschaltet. Wer ein bisschen technisches Verständnis hat, wird aber schnell feststellen, dass die Einbettung der Kommentare über einen simplen iframe (nach dem ähnlichen Schema wie bei Facebook) erfolgt. An die einzubettende Google-Seite wird die URL übergeben, zu der die Kommentare gespeichert werden sollen.</p>
<div id="attachment_823" style="width: 614px" class="wp-caption alignnone"><img class="size-full wp-image-823" alt="Google+ Kommentare in Aktion auf einem Testprojekt" src="https://www.torbenleuschner.de/blog/wp-content/uploads/gplus-comments.png" width="604" height="398" /><p class="wp-caption-text">Google+ Kommentare in Aktion auf einem Testprojekt</p></div>
<h3>Wie baue die die Google+ Kommentare auf meiner Webseite ein?</h3>
<p>Die gekürzte Google-URL lautet wie folgt:</p>
<p style="padding-left: 30px;"><strong>https://plusone.google.com/_/widget/render/comments?href=<em>[URL]</em></strong></p>
<p>Somit ist es also möglich, die Google+ Kommentare bereits heute ohne großen Aufwand oder speziellem Hack auf der eigenen Seite zu verwenden. Folgender Quellcode zeigt die statische Implementierung, als auch den Einbau in WordPress oder <a href="https://store.fokus-cms.de/admin/" target="_blank">fokus</a>:</p>
<script src="https://gist.github.com/5419107.js"></script>
<p>Über die Parameter <em>width</em> und <em>height</em> lassen sich die Dimensionen des Kommentar-Widgets anpassen. Dabei ist mir aufgefallen, dass der innerhalb der Google-URL übergebene Wert ca. 50 Pixel kleiner sein sollte als die iframe-Breite, um Scrollbalken zu vermeiden. Per <em>hl</em>-Attribut definiert man die zu verwendende Sprache, also zum Beispiel &#8222;de&#8220; für Deutsch.</p>
<p>In meinen Tests gab es keinerlei Schwierigkeiten bei der Verwendung des Google+ Kommentar-Widgets. Es ist davon auszugehen, dass Google eine frühzeitige &#8211; wenn auch nicht offizielle &#8211; Einbettung toleriert. Durch Veröffentlichung der entsprechenden URLs beziehungsweise des iframe-Snippets im Quellcode des Blogger-Dienstes war davon auszugehen, dass es nur eine Frage der Zeit ist, bis die Funktion in externen Webseiten auftaucht.</p>
<h2>WordPress Plugin für Google+ Kommentare</h2>
<p>Schnell, schneller, <a href="https://plus.google.com/110896309898385707991/posts" target="_blank">André Goldmann</a>. Er hat die Gunst der Stunde genutzt und bereits ein <a href="http://www.pixeldreher.net/google-plus-kommentar-wordpress-plugin" target="_blank">WordPress Plugin für Google+ Kommentare</a> veröffentlicht! :)</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/822/neue-google-kommentarfunktion-einbauen/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Warum responsive Webseiten besser ranken (sollten)</title>
		<link>https://www.torbenleuschner.de/blog/805/warum-responsive-webseiten-besser-ranken-sollten/</link>
		<comments>https://www.torbenleuschner.de/blog/805/warum-responsive-webseiten-besser-ranken-sollten/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 08:23:54 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[SEO & SEM]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=805</guid>
		<description><![CDATA[Kurz vorweg: Zu der Idee, heute Morgen einen Artikel über Suchmaschinenoptimierung und Responsive Webdesign zu schreiben, bin ich durch den neuen OnlineRadar 2.0 gekommen. Der Podcast von Kai Spriestersbach und Eric Kubitz feierte vor wenigen Tagen auf Radio4SEO Premiere beziehungsweise Relaunch – absolut empfehlenswert. In einem Abschnitt gingen die beiden Experten auf das Thema Mobile und Responsive ein, welches ich an dieser Stelle auch behandeln möchte. Vor ziemlich genau anderthalb Jahren, also noch vor Panda, behauptete ich im Artikel „Vorteile [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Kurz vorweg: Zu der Idee, heute Morgen einen Artikel über Suchmaschinenoptimierung und Responsive Webdesign zu schreiben, bin ich durch den <a href="http://www.radio4seo.de/or201/" target="_blank">neuen OnlineRadar 2.0</a> gekommen. Der Podcast von <a href="http://www.seokai.com/" target="_blank">Kai Spriestersbach</a> und <a href="http://www.seo-book.de/" target="_blank">Eric Kubitz</a> feierte vor wenigen Tagen auf <a href="http://www.radio4seo.de/" target="_blank">Radio4SEO</a> Premiere beziehungsweise Relaunch – absolut empfehlenswert. In einem Abschnitt gingen die beiden Experten auf das Thema Mobile und Responsive ein, welches ich an dieser Stelle auch behandeln möchte.</p>
<p>Vor ziemlich genau anderthalb Jahren, also noch vor Panda, behauptete ich im Artikel „<a href="http://www.torbenleuschner.de/blog/363/vorteile-von-html5-aus-seo-sicht/">Vorteile von HTML5 aus SEO-Sicht</a>“, dass moderne Webseiten in Zukunft Vorteile beim Suchmaschinen-Ranking erfahren könnten. Damals erhielt ich natürlich viel Gegenwind, schließlich waren Links das Maß aller Dinge. Im letzten Jahr scheint sich die Situation aber etwas <a href="http://de.onpage.org/" target="_blank">gewandelt</a> zu haben und Onpage Optimierungen werden (zum Glück) wieder wichtiger.</p>
<h2>Responsive Webdesign</h2>
<p>Für alle Leser, die noch nichts mit dem Begriff anfangen können, möchte ich die Technologie kurz beschreiben. Responsive Webdesign beschreibt Techniken um die Ausgabe des Inhalts an die Eigenschaften des Ausgabegerätes anzupassen. In der Regel geht es dabei um die Skalierbarkeit einer Website auf Basis der verfügbaren Pixel.</p>
<p>Die technische Basis hinter Responsive Webdesign bilden die <a href="http://cssmediaqueries.com/" target="_blank">CSS3 Media Queries</a>. Diese sind quasi so etwas wie IF-Abfragen im CSS-Quellcode. Viele wissen nicht, dass diese Media Queries noch mehr können, als nur die Bildschirmdimensionen zu verrechnen. So lässt sich beispielsweise auch ermitteln, ob das Endgerät in der Lage ist, einen Hover-Status zurückzuliefern. Für Mouseover-Navigationen eine wichtige Information.</p>
<script src="https://gist.github.com/4563061.js"></script>
<p>Im OnlineRadar meine ich herausgehört zu haben, dass Responsive Webdesign durch den Begriff „<em>Mobile</em>“ geprägt ist. Das würde ich so nicht unterschreiben. Der große Vorteil der neuen Technologie liegt gerade in der Unabhängigkeit von Gerätekategorien.</p>
<p>Inhalte werden für den Nutzer passend ausgeliefert. Das betrifft nicht nur Smartphones, sondern auch Tablets, Notebooks, TV-Geräte und sogar den 27 Zoll iMac.</p>
<h2>Bessere Rankings für responsive Webseiten? Ja, bitte!</h2>
<p>Meiner Meinung nach gehört Responsive Webdesign zu den im Bezug auf Suchmaschinenoptimierung wichtigsten technologischen Entwicklungen der letzten Jahre. Die These stützt sich auf die Prämisse Googles, zu einem Suchbegriff das beste Ergebnis im Web anzuzeigen. Doch warum könnte sich diese Korrelation in den letzten Jahren verschoben haben?</p>
<p>Zugegeben, am 27 Zoll iMac mit 100.000er Leitung sitzend, kann es dem Suchenden so ziemlich egal sein, ob die Website 100 oder 500 KB laden muss. Ebenso ist es ihm schnuppe, ob der Inhaltsbereich 1200 Pixel breit ist. Und noch weniger interessiert es ihn, ob er die Subnavigation nur per Mouseover erreichen kann. Er findet die Information die er sucht.</p>
<p>Selbe Suche; andere Situation. Statt daheim im warmen zu sitzen, könnte der Suchende ja gerade auch unterwegs sein. Den iMac hat er ausnahmsweise Zuhause gelassen und stattdessen nur sein iPhone dabei. Natürlich ist LTE nicht verfügbar; EDGE muss ausreichen.</p>
<p>Ist unter diesen Umständen die beschriebene Webseite dann wirklich noch das beste Ergebnis?</p>
<h3>Google liebt Responsive Webdesign</h3>
<p>Google selbst gibt offen zu, Responsive Webdesign als beste Lösung für mobile Webseiten zu sehen. Folgenden Auszug (frei durch mich übersetzt) findet man auf der offiziellen Google Doku-Seite &#8222;<a href="https://developers.google.com/webmasters/smartphone-sites/details" target="_blank">Building Smartphone-Optimized Websites</a>&#8222;:</p>
<blockquote><p>Wir empfehlen den Einsatz von Responsive Webdesign, da es mehrere positive Aspekte vereint:</p>
<ul>
<li>Die Verwendung von nur einer einzigartigen URL für denselben Inhalt macht es Benutzern einfacher, den Inhalt über soziale Netzwerke zu teilen oder die Seite zu verlinken. Außerdem ist es für den Google Crawler leichter, die Seite korrekt zu indexieren.</li>
<li>Es ist keine Weiterleitung nötig, um den Nutzer auf die mobile Webseite zu bringen. Weiterleitungen beinträchtigen die Ladezeit negativ und können in vielen Fällen, vor allem bei Weiterleitungen auf Basis des User Agents, zu Fehlern führen.</li>
<li>Es werden sowohl für dich als auch für den Google Crawler Ressourcen eingespart. Der Google Bot muss deine responsive Webseite nur ein einziges Mal besuchen, um an den Content zu kommen. Deshalb können wir effizienter Crawlen und deine Seite somit auch häufiger besuchen.</li>
</ul>
</blockquote>
<p>Interessant in dem Zusammenhang ist auch die Frage, ob Google optimierte Webseiten bereits erkennt. Auch zu diesem Thema findet man eine klare Stellungnahme (wieder frei durch mich übersetzt):</p>
<blockquote><p>Stell sicher, dass der Googlebot wichtige Seitenbestandteile wie Bilder, CSS- und Javascript-Dateien korrekt crawlen kann. Diese dürfen nicht über die robots.txt oder anderweitig blockiert werden. Wenn wir in der Lage sind, auf diese externen Dateien zuzugreifen, kann unser Algorithmus deine responsive Webseite korrekt verarbeiten.</p></blockquote>
<h3>Praxistest bringt Erkenntnis</h3>
<p>Gerade durch den Siegeszug der (<em>günstigen</em>) Tablets im letzten Jahr sind sehr viele Menschen mit dem Medium Internet in Berührung gekommen, die man nicht gerade als affin bezeichnen kann. Wie sich diese Entwicklung im Jahr 2013 weiterführen wird, dürfte klar sein.</p>
<p>Macht selbst den Praxistext. Gebt einer Person aus diesem Umfeld die Anweisung, auf zwei verschiedenen Webseiten nach Informationen zu suchen. Auf der einen Seite die klassische Desktop Website, auf der anderen Seite die für sein Endgerät optimierte Webseite. Welche wird wohl in seiner Gunst vorne liegen? Die auf der er erst pinchen, zoomen und scrollen muss? In den seltensten Fällen!</p>
<p>Warum sollte Google das anders sehen?</p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/805/warum-responsive-webseiten-besser-ranken-sollten/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Pagespeed: Social Buttons nachladen lassen</title>
		<link>https://www.torbenleuschner.de/blog/790/pagespeed-social-buttons-nachladen-lassen/</link>
		<comments>https://www.torbenleuschner.de/blog/790/pagespeed-social-buttons-nachladen-lassen/#comments</comments>
		<pubDate>Mon, 14 Jan 2013 08:16:04 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google+]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Online-Marketing]]></category>
		<category><![CDATA[SEO & SEM]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=790</guid>
		<description><![CDATA[Wie in jedem neuen Jahr nehme ich mir auch diesmal wieder vor, mehr zu Bloggen. Leider macht mir das Tagesgeschäft da häufig einen Strich durch die Rechnung. Heute morgen habe ich mir dennoch mal wieder ein bis zwei Stündchen reserviert, um mit einem neuen Beitrag zum Thema Pagespeed auch hier im Blog 2013 einzuläuten. Schreiben möchte ich mal wieder über eines meiner aktuellen Lieblingsthemen: Pagespeed. Bereits vor einigen Monaten habe ich hier auf dem Blog einen relativ umfangreichen Artikel zum [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Wie in jedem neuen Jahr nehme ich mir auch diesmal wieder vor, mehr zu Bloggen. Leider macht mir das Tagesgeschäft da häufig einen Strich durch die Rechnung. Heute morgen habe ich mir dennoch mal wieder ein bis zwei Stündchen reserviert, um mit einem neuen Beitrag zum Thema Pagespeed auch hier im Blog 2013 einzuläuten.</p>
<p>Schreiben möchte ich mal wieder über eines meiner aktuellen Lieblingsthemen: Pagespeed. Bereits vor einigen Monaten habe ich hier auf dem Blog einen relativ umfangreichen <a title="PageSpeed: So machst du deine Website schneller" href="http://www.torbenleuschner.de/blog/730/pagespeed-so-machst-du-deine-website-schneller/">Artikel zum Thema Pagespeed</a> veröffentlicht, der auf mehrere einzelne Teilaspekte eingeht. Heute möchte ich etwas konkreter werden und mich einem Thema zuwenden, mit dem sich wohl jeder Webmaster schon mal rum geärgert hat. Die Rede ist von den bekannten Social Buttons (Facebook, Twitter, Google +1), auf die man zum einen selten verzichten möchte, die auf der anderen Seite aber häufig ein Grund für schlechte Website-Performance sind.</p>
<h2>Lösung: Erst das Wichtige laden lassen</h2>
<p>Technisch gesehen gibt es für dieses Problem eine recht simple Lösung, die sich sogar ohne den Einsatz von Javascript-Bibliotheken wie jQuery schnell umsetzen lässt. Wir warten einfach ab, bis die wichtigen Bestandteile der Website (CSS, Bilder, Javascript, &#8230;) geladen sind und geben anschließend erst die Anweisung, die Social Buttons zu integrieren.</p>
<p>Schauen wir uns dazu einfach mal ein stark vereinfachtes HTML-Dokument an:</p>
<script src="https://gist.github.com/4528394.js"></script>
<p>Sieht auf den ersten Blick wahrscheinlich komplizierter aus als es ist. Folgend möchte ich euch die wichtigen Passagen des Dokuments im Detail erklären:</p>
<ul>
<li><strong>Zeilen 5 &#8211; 10:</strong><br />
Hier nehmen wir eine ganz einfache Formatierung für die Social Buttons vor. Sie sollen sich linksbündig anordnen und 12 Pixel Abstand zum nächsten Button einhalten.</li>
<li><strong>Zeile 16:</strong><br />
An dieser Stelle initialisieren wir einen leeren DIV-Container mit der ID <em>social-buttons</em>. In diesen fügen wir im Anschluss per Javascript die Buttons ein.</li>
<li><strong>Zeile 19:</strong><br />
Per <a href="http://javascript.about.com/library/blonload.htm" target="_blank">window.onload</a> sagen wir der anonymen Funktion, dass sie mit der Ausführung warten soll, bis die komplette Website (einschließlich Bildern) vollständig geladen wurde. Somit wird an dieser Stelle bereits verhindert, dass das Laden der Social Buttons den Aufbau der restlichen Website behindert.</li>
<li><strong>Zeilen 20 &#8211; 22:</strong><br />
Die Social Buttons benötigen eine URL, auf die sie sich beziehen können. Twitter benötigt zudem noch einen Titel beziehungsweise Tweet-Text. Diese Angaben könnte man zwar auch leer lassen und die Buttons würden sich automatisch URL und Seitentitel ziehen; ich empfehle jedoch immer eine manuelle Eingabe vorzunehmen, um Fehlerquellen im Vorfeld auszuschließen.<br />
In Content Management Systemen wie WordPress oder fokus stehen zum Füllen dieser Variablen praktische Funktionen bereit. Für die URL wäre das <em>the_permalink()</em> beziehungsweise <em>$fks-&gt;getURL()</em> und für den Titel <em>the_title()</em> beziehungsweise <em>$fks-&gt;getTitle()</em>.</li>
<li><strong>Zeile 24:</strong><br />
Wir referenzieren das DIV  <em>#social-buttons</em> für den späteren Aufruf.</li>
<li><strong>Zeile 26:</strong><br />
Neben <em>window.onload</em> kommt auch noch die Funktion <a href="http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout" target="_blank">setTimeout()</a> zum Einsatz. Damit können wir den Aufruf der folgenden anonymen Funktion um eine gewünschte Anzahl von Millisekunden aussetzen (Variable <em>wait</em> in Zeile 22 und 49).<br />
So stellen wir zum einen sicher, dass die Website wirklich fertig geladen ist. Zum anderen gibt es Artikel <del>die ich auf die schnelle nicht finde</del>, dass die Conversion Rate der Buttons besser sei, wenn sie nicht sofort sichtbar sind sondern erst nach einiger Zeit erscheinen.</li>
<li><strong>Zeilen 28 &#8211; 30:</strong><br />
An dieser Stellen fügen wir das HTML des Twitter Buttons in unser bis dato noch leeres DIV ein. Das legen wir uns als erstes ein neues DIV an (Z. 28), welches wir anschließend (Z. 29) mit Inhalt befüllen. Hier finden wir auch die Variablen <em>url</em> und <em>title</em> wieder, die wir an entsprechender Stelle einsetzen. In Zeile 30 fügen wir unser neues DIV schließlich in unser Bestehendes (#social-buttons) ein.</li>
<li><strong>Zeile 32:</strong><br />
Hier laden wir nun das zum Twitter-Button gehörende Javascript. Dieses stammt nicht von uns sondern wurde einfach von der entsprechenden <a href="https://twitter.com/about/resources/buttons#tweet" target="_blank">Tweet-Button-Dokuseite</a> entnommen.</li>
<li><strong>Zeilen 35 &#8211; 40:</strong><br />
Nun wird auch der Google +1 Button geladen und in die Seite integriert. Die Ausführung ist mit der des Tweet-Buttons nahezu identisch. Das Javascript in Zeile 40 wurde von der <a href="https://developers.google.com/+/plugins/+1button/" target="_blank">+1-Dokuseite</a> kopiert.</li>
<li><strong>Zeilen 43-48:</strong><br />
Das beste kommt zum Schluss? In diesem Fall nicht ganz richtig, schließlich ist der Facebook Like Button in jeder Hinsicht einfach nur grausig. Nachgeladen lädt der Button an sich zwar auch nicht schneller, aber er bremst den restlichen Seitenaufbau wenigstens nicht aus.<br />
Wie bei den anderen beiden Buttons zuvor wurde das Javascript in Zeile 48 wieder nur kopiert; und zwar von <a href="https://developers.facebook.com/docs/reference/plugins/like/" target="_blank">hier</a>.</li>
</ul>
<h3>Keine Abstriche bei der Individualisierung der Buttons</h3>
<p><img class="alignright size-full wp-image-799" title="social-buttons-nachladen" src="https://www.torbenleuschner.de/blog/wp-content/uploads/social-buttons-nachladen1.png" alt="" width="295" height="112" />Getestet habe ich das ganze erfolgreich mit dem Facebook, Google +1 und Tweet-Button. Im Prinzip sollte es aber auch mit fast jedem anderen Social Button funktionieren. Natürlich könnt ihr auch weiterhin die Ausgabe der Button im jeweiligen HTML-Code variieren; zum Beispiel beim Like Button von <em>box_count</em> auf <em>button_count</em> umstellen.</p>
<p>Das ganze kann man natürlich noch weiterspinnen und zum Beispiel an Hand der Bildschirmgröße festlegen, ob überhaupt alle oder bestimmte Buttons geladen werden sollen. Gerade auf Android Smartphones macht der Like Button eventuell weniger Sinn, wohingegen der +1 Button auf Grund des persistenten Google Logins durchaus in Betracht zu ziehen wäre.</p>
<p>Feedback, Kritik und Anregungen wie immer in die Kommentare. Ansonsten natürlich gerne teilen, damit <em>unser</em> Web in 2013 noch schneller und zugänglicher wird :)</p>
<h2>Update: Buttons erst bei Mouseover laden</h2>
<p>Der <a href="http://mizine.de/" target="_blank">Viktor Dite</a> hat mich in den Kommentaren zu diesem Artikel auf eine gute Idee gebracht. Man könnte die Social Buttons ja auch erst per Klick oder alternativ Mouseover austauschen. Die Idee finde ich so spannend, dass ich gleich mal das Script umgeschrieben habe. Natürlich sollte man statt einem Text bereits die entsprechenden Icons als Bild (<a title="Website Speed: Bilder &amp; Icons durch Sprites optimieren" href="http://www.torbenleuschner.de/blog/544/website-speed-sprites/">CSS-Sprite</a>) einbinden.</p>
<script src="https://gist.github.com/4529148.js"></script>
<p>Wer statt Mouseover lieber per Klick laden lassen möchte, muss lediglich den Parameter &#8222;<em>mouseover</em>&#8220; in Zeile 29 und 55 durch &#8222;<em>click</em>&#8220; austauschen.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/790/pagespeed-social-buttons-nachladen-lassen/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>3 Tipps für responsive Webseiten</title>
		<link>https://www.torbenleuschner.de/blog/781/3-tipps-fur-responsive-webseiten/</link>
		<comments>https://www.torbenleuschner.de/blog/781/3-tipps-fur-responsive-webseiten/#comments</comments>
		<pubDate>Mon, 03 Dec 2012 09:48:28 +0000</pubDate>
		<dc:creator><![CDATA[Torben Leuschner]]></dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.torbenleuschner.de/blog/?p=781</guid>
		<description><![CDATA[Das Responsive Webdesign mittlerweile bei vielen Webentwicklern angekommen ist, dürfte kein Geheimnis mehr sein. Trotzdem gibt es meines Erachtens noch immer viel zu viele Entwickler, die den Vorteil einer für Mobilgeräte optimierten Webseite nicht erkennen. Im Rahmen dieses Beitrags möchte ich euch drei kleine Tricks vorstellen, mit denen ihr eventuell noch mehr aus dem Trendthema „Responsive Webdesign“ herausholen könnt. Was ist Responsive Webdesign überhaupt? Vor wenigen Tagen habe ich einen sehr interessanten Satz auf Twitter gelesen, an dessen Autor ich [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Das Responsive Webdesign mittlerweile bei vielen Webentwicklern angekommen ist, dürfte kein Geheimnis mehr sein. Trotzdem gibt es meines Erachtens noch immer viel zu viele Entwickler, die den Vorteil einer für Mobilgeräte optimierten Webseite nicht erkennen. Im Rahmen dieses Beitrags möchte ich euch drei kleine Tricks vorstellen, mit denen ihr eventuell noch mehr aus dem Trendthema „<em>Responsive Webdesign</em>“ herausholen könnt.<span id="more-781"></span></p>
<h3>Was ist Responsive Webdesign überhaupt?</h3>
<p>Vor wenigen Tagen habe ich einen sehr interessanten Satz auf Twitter gelesen, an dessen Autor ich mich leider nicht mehr erinnern kann. Die Aussage war aber ungefähr die folgende:</p>
<blockquote><p>„Das Web war schon immer responsive, bevor wir angefangen haben, es in Container mit fester Breite zu verpacken.“</p></blockquote>
<p>Diese Aussage trifft es natürlich auf den Punkt. Kein HTML-Element besitzt von Haus aus eine in Pixeln definierte Breite. Standardmäßig sind Inline-Elemente so breit wie ihr jeweiliger Inhalt; Block-Elemente hingegen besitzen immer eine Breite von 100%. Erst in dem wir Elementen über CSS eine feste Breite zuweisen, zerstören wir ihre Dynamik.</p>
<p>Natürlich konnten Webentwickler in der Vergangenheit nicht ohne das Definieren fester Breiten auskommen: Designs mussten „<em>Pixel Perfect</em>“ umgesetzt werden, ein 960 Pixel breiter „<em>wrapper</em>“ war Quasi-Standard.</p>
<p>Heute hat sich diese Situation geändert. Durch CSS-Eigenschaften wie „<a href="http://www.css4you.de/max-width.html" target="_blank">max-width</a>“ oder <a href="http://www.elmastudio.de/webdesign/was-konnen-css3-media-queries-wirklich-leisten/" target="_blank">Media Queries</a> können wir Webseiten ausliefern, die zum einen wieder auf ein fluides Layout als Basis zurückgreifen und trotzdem auflösungsspezifische Eigenschaften besitzen. Auf dieser Grundlage ist es möglich geworden, Webseiten mit identischem HTML-Quellcode auf diversen Endgeräten vollkommen unterschiedlich darzustellen.</p>
<h2>1. Tipp: Elemente verstecken</h2>
<p>Der erste Tipp ist nicht einmal großartig technischer Natur. Vielmehr geht es darum, sich bewusst zu machen, dass Besucher von verschiedenen Geräteklassen auch durchaus andere Ansprüche an die zu besuchende Webseite stellen.</p>
<p>Ein gutes Beispiel dafür ist die klassische Restaurant-Webseite. Besucher, die die Seite mit einem Smartphone aufrufen, sind in der Regel nach konkreten Informationen: Öffnungszeiten, Wegbeschreibung, Speisekarte. Grafische Elemente und große Bilder sind hier eher unerwünscht.<br />
Anders sieht es bei Besuchern aus, die über einen Desktop Browser kommen: Diese befinden sich nicht selten noch im Entscheidungsprozess. Es ist also auch wichtig, einen Eindruck über das Restaurant zu vermitteln, wofür sich der Einsatz von großen Slidern und Bildergalerien anbietet.</p>
<p>Als Webentwickler muss man sich und dem Kunden also bewusst machen, dass nicht alle Elemente, die eine Desktop-Variante beinhaltet, auch auf der mobilen Webseite Platz finden. Mut zum Kürzen lautet in diesem Fall die Devise.</p>
<p>Technisch lässt sich das ganze über die CSS3 Media Queries recht einfach umsetzen:<br />
<script src="https://gist.github.com/4193863.js"></script></p>
<h2>2. Tipp: Fluides Layout mit fester Breite</h2>
<p>Die Basis für fast jedes responsive Webdesign sollte ein fluides Layout sein. Hier macht es aber durchaus Sinn, wieder auf feste Pixelgrößen zurückzugreifen um eine Maximalgröße zu definieren.</p>
<div id="attachment_782" style="width: 630px" class="wp-caption alignnone"><a href="http://www.torbenleuschner.de/blog/wp-content/uploads/textwueste.png"><img class="size-medium wp-image-782" title="textwueste" src="https://www.torbenleuschner.de/blog/wp-content/uploads/textwueste-620x67.png" alt="" width="620" height="67" srcset="https://www.torbenleuschner.de/blog/wp-content/uploads/textwueste-620x67.png 620w, https://www.torbenleuschner.de/blog/wp-content/uploads/textwueste-1024x111.png 1024w" sizes="(max-width: 620px) 100vw, 620px" /></a><p class="wp-caption-text">Fluides Layout auf einem 1920px Monitor: So macht Lesen nicht wirklich Spaß!</p></div>
<p>Stellen wir uns vor, wir besuchen eine fluide Webseite mit einem 27 Zoll iMac, der eine Auflösung von 2560 x 1440 Pixel besitzt. Würde sich der textuelle Inhalt nun über die gesamte Breite erstrecken, hätten wir ellenlange Wortreihen. Die Folge wäre, dass sich niemand mehr zwischen den Absätzen zurechtfinden beziehungsweise das Lesen extrem erschwert würde.</p>
<p>Um dies zu verhindern, macht es durchaus Sinn, dem Hauptcontainer („<em>wrapper</em>“) oder einzelnen Elementen eine maximale Breite mitzugeben. Technisch ist das ganze wieder schnell implementiert:<br />
<script src="https://gist.github.com/4193867.js"></script></p>
<p>Der Schlüssel zum Erfolg ist in diesem Fall eine Kombination aus den CSS-Eigenschaften <em>width</em> und <em>max-width</em>. Dem Container geben wir eine Breite von 100%, wodurch er sich natürlich über das gesamte Browserfenster erstreckt. Über die Eigenschaft <em>max-width</em> definieren wir zusätzlich eine maximale Breite in Pixeln und <em>margin: 0 auto</em> sorgt dafür, dass der Container mittig zentriert wird, falls das Fenster breiter ist als der unter <em>max-width</em> angegebene Wert.</p>
<h2>3. Tipp: Mehrspaltige Layouts untereinander anzeigen</h2>
<p>Die meisten Webseiten-Layouts sind zwei- oder dreispaltig. Was bei Desktop-Auflösungen durchaus Sinn macht, ist bei kleineren Bildschirmen jedoch irgendwann störend. Stellen wir uns vor, wir haben einen Hauptinhaltsbereich mit 65% und eine Seitenleiste mit 35% Breite. Entspräche dies bei einer Fenstergröße von 1000 Pixeln noch angenehmen 650 zu 350 Pixeln, sähe die Situation bei einem Smartphone schon anders aus.</p>
<p>Eine Standardauflösung bei vielen Mittelklasse-Smartphones ist beispielsweise 480 x 800 Pixel. Dementsprechend wäre der Hauptinhaltsbereich ungefähr 310 Pixel und die Seitenleiste 170 Pixel breit. Hier würde es also definitiv mehr Sinn machen, beide Spalten auf 100% Breite zu bringen und untereinander anzuzeigen.</p>
<p>Mit Hilfe der CSS3 Media Queries stellt auch diese Implementierung kein Problem dar:<br />
<script src="https://gist.github.com/4193884.js"></script></p>
<h3>Responsive Webdesign: Nur ein Trend?</h3>
<p>Ich hoffe ihr seht, dass man mit wenigen Kniffen und etwas Quellcode auch bereits bestehende Desktop-Webseiten um mobile Komponenten erweitern kann. Wer allerdings plant, einen Relaunch oder eine neues Projekt in Auftrag zu geben, sollte auf eine Agentur zurückgreifen, die responsive Webdesignes bereits anbietet; zum Beispiel ein <a href="http://www.gsdh.org/produktion.html" target="_blank">HTML Webdesign von der Kreativagentur GSDH</a>.</p>
<p>Denn die Zugriffe über mobile Endgeräte nehmen kontinuierlich zu, auf der anderen Seite wird die Gerätespanne und damit auch die unterstützten Auflösungen immer größer. Zwischen 360 und 2560 Pixeln ist heutzutage so ziemlich alles möglich. Fluide Layouts und Responsive Webdesign sind also keine kurzfristigen Trendthemen, sondern die Techniken der Zukunft und Gegenwart.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.torbenleuschner.de/blog/781/3-tipps-fur-responsive-webseiten/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
