becks.de Cache Optimierungen

Im Zuge des Relaunches von becks.de haben wir uns auch Gedanken über zusätzliche Maßnahmen zur Performancesteigerung und einen schnelleren Seitenaufbau gemacht.

Ganz abgesehen von Optimierungen in den Datenbank-Abfragen, einsetzen von File- und Ram-Caches ging es auch um das setzen von Cache-Direktiven für statische Dateien sowie eine Subdomain zur Auslieferung dieser und der damit verbundenen Erhöhung der parallelen Anfragen durch den Browser.

Wir haben zur Analyse Tools wie YSlow! von Yahoo oder Page Speed von Google genommen (wir berichteten), um damit Dinge zu finden, die es zu verbessern gab.

Schritt 1: Fasse zusammen und komprimiere

Als ersten Schritt haben wurden dazu die Stylesheets und Javascript-Dateien zusammengefasst und anschließend komprimiert (Entfernen von Kommentaren, Zeilenumbrüchen, doppelten Leerzeichen etc.). Dieser Vorgang geschieht komplett automatisiert, die dadurch erzeugten Dateien werden gecached und mit einer versionierten URL ausgegeben (z.B. http://becks.de/media/201104/js/…). Diese URL ändert sich, je nachdem wann eine der eingebundenen Dateien das letzte mal verändert wurden ist, selbstständig.

Schritt 2: Komprimiere erneut. Bitte was? Ja, nochmal!

Ein weiterer Schritt war die erneute Kompression der Inhalte. Das mag jetzt erstmal verwirrend sein, hat aber seinen Grund. Zwar haben wir im vorhergehenden Schritt bereits die Dateien komprimiert, wir haben die jedoch nur von unnötigen Zeichen entfernt. In diesem Schritt jedoch komprimieren wir Dateien selbst mittels dem gzip-Verfahren. Dadurch können wir die Dateigrößen teils bis zu 80% verkleinern, was dazu führt, dass der Server (Traffic) und der Browser (Ladezeiten) weniger Daten übertragen müssen. Jedoch ist dabei zu beachten, dass nicht alle Daten komprimiert übertragen werden dürfen. PDF’s, Filme, Flashdateien – um nur mal drei zu nennen – dürfen beispielsweise nicht komprimiert werden, da die Datei ansonsten nicht mehr korrekt gelesen werden können. Unproblematisch ist das Komprimieren hingegen bei der Ausgabe von HTML, bei Bildern, Stylesheets, Javascript, XML, JSON und und und. Kurzum, bei eigentlich allen Dokumenten die als Textform übertragen werden. Diese komprimierten Daten werden vom Browser anschließend wieder dekomprimiert und verwendet.

Schritt 3: Ablauf-Datum in Zukunft und Vergangenheit

Dieser Schritt befasst sich mit den Expires- und Last-Modified-Headern von statischen Dateien. Diese werden verwendet um den Browser zu sagen, wann eine Datei verändert wurde oder abläuft. Anders formuliert, wann eine Datei vom Browser neu geladen muss. Diese Header-Angaben kann man sich zu nutze machen um den Browser somit Direktiven zu vermitteln, damit dieser statische Inhalte länger im Cache behält und die Seite beim erneuten Besuch um ein vielfachen schneller lädt. Beispielsweise wurden auf der Startseite von becks.de, mit leerem Browser-Cache, Daten in der Größe von 1.3 MB geladen. Mit gefüllten Cache, also bei erneutem Besuch, wurden nur noch Daten von 43 KB geladen. Diese 43 KB waren lediglich das HTML selbst, dem wir als Ablaufs-Datum ein Datum aus der Vergangenheit gegeben haben. Damit suggerieren wir dem Browser, dass diese Datei längst überfällig ist und er sie erneut laden soll und gehen damit auf Nummer sicher, dass alle Änderungen auf der (dynamischen) Startseite auch so beim User dargestellt werden.

Schritt 4: die Andere

Zu guter Letzt haben wir unser Ausgabe-System so angepasst, dass alle Bilder von einer Subdomain (http://static.becks.de) ausgegeben werden. Damit ermöglichen wir dem Browser, mehr parallel ablaufende Anfragen durchzuführen als er es bei nur einer Domain könnte und können somit den Seitenaufbau beim User nochmal etwas beschleunigen.

Damit dieser Artikel nicht arg so theoretisch ist, haben wir euch hier unsere .htaccess als Beispiel eingefügt.

 

 

# rewrites
# +++++++++++++++++++++++++++++++++++++++++++++++++

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTP_HOST} !www.becks.de [NC]
    RewriteCond %{HTTP_HOST} !static.becks.de [NC]
    RewriteRule ^(.*)$ http://www.becks.de/$1 [L,R=301]

    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    RewriteRule ^media/([0-9]+)/(.*)$ /application/cache/$2 [L]

    RewriteRule ^sitemap_becks.xml$ /searches/sitemap [L]

    RewriteRule ^index.php/(.*)$ /$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

# media caching
# +++++++++++++++++++++++++++++++++++++++++++++++++

Header unset ETag
FileETag None
<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
    Header set Last-Modified "Fri, 11 Mar 2022 10:10:36 GMT"
    Header set Cache-Control "public, no-transform"
</FilesMatch>

# expires header
# +++++++++++++++++++++++++++++++++++++++++++++++++

<IfModule mod_expires.c>
    # turn on the module for this directory
    ExpiresActive on

    # set default - not active due caching of pages
    #ExpiresDefault "access plus 24 hours"

    # cache common graphics
    ExpiresByType image/jpg "access plus 1 months"
    ExpiresByType image/gif "access plus 1 months"
    ExpiresByType image/jpeg "access plus 1 months"
    ExpiresByType image/png "access plus 1 months"

    # cache CSS
    ExpiresByType text/css "access plus 1 months"

    # cache other filetypes
    ExpiresByType text/javascript "access plus 1 months"
    ExpiresByType application/javascript "access plus 1 months"
    ExpiresByType application/x-shockwave-flash "access plus 1 months"
</IfModule>

# compressing header
# +++++++++++++++++++++++++++++++++++++++++++++++++

<IfModule mod_deflate.c>

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/x-httpd-php application/rss+xml application/atom_xml

</IfModule>

 

Wer mehr zu diesem Thema wissen möchte dem sei die Seite askapache.com empfohlen, welche sehr ausführliche Artikel, Anleitungen und Beispiele enthält und auch uns als Hilfe diente.

TemplaVoila Spalten im Typo3 Backend anpassen

TemplaVoila! für Typo3 ist schon eine schicke Sache und wird sehr gern für unsere Kundenprojekte genutzt. Dumm jedoch, dass TV seit geraumer Zeit die Elemente mit dem Typ “Inhaltselemente auswählen” im Backend in Spalten nebeneinander und nicht untereinander darstellt. Nicht nur, dass es für uns verwirrend ist, es ist auch für die Kunden die später mal ihre Seiten selbst pflegen sollen alles andere als intuitiv.

Um dieses Problem zu beheben und euch an der Lösung teilhaben zu lassen, beschreiben wir, wir ihr das Layout selt in wenigen Schritten ändern könnt.

Schritt 1:
Als erstes öffnet bitte die index.php im Order typo3conf/ext/templavoila/mod1.

Schritt 2:
Geht dann zu Zeile 1408. Dort ersetzt ihr folgenden Inhalt:

foreach ($cells as $cell) {
	$headerCells[] = vsprintf('<td width="%4$d%%" class="bgColor6 tpm-title-cell">%3$s</td>', $cell);
	$contentCells[] = vsprintf('<td %2$s width="%4$d%%" class="tpm-content-cell">%5$s</td>', $cell);
}

$output = '
<table border="0" cellpadding="2" cellspacing="2" width="100%" class="tpm-subelement-table">
	<tr>' . (count($headerCells) ? implode('', $headerCells) : '<td>&nbsp;</td>') . '</tr>
	<tr>' . (count($contentCells) ? implode('', $contentCells) : '<td>&nbsp;</td>') . '</tr>
</table>
';

durch diesen hier:

foreach ($cells as $cell) {
	//$headerCells[] = vsprintf('<td width="%4$d%%" class="bgColor6 tpm-title-cell">%3$s</td>', $cell);
	//$contentCells[] = vsprintf('<td %2$s width="%4$d%%" class="tpm-content-cell">%5$s</td>', $cell);
	$contentCells[] = '<tr>' . vsprintf('<td width="100%%" class="bgColor6 tpm-title-cell">%3$s</td>', $cell) . '</tr>'; // header cell
	$contentCells[] = '<tr>' . vsprintf('<td %2$s width="100%%" class="tpm-content-cell">%5$s</td>', $cell) . '</tr>'; // content cell
}

//$output = '
//	<table border="0" cellpadding="2" cellspacing="2" width="100%" class="tpm-subelement-table">
//		<tr>' . (count($headerCells) ? implode('', $headerCells) : '<td>&nbsp;</td>') . '</tr>
//		<tr>' . (count($contentCells) ? implode('', $contentCells) : '<td>&nbsp;</td>') . '</tr>
//	</table>
//';

$output = '
	<table border="0" cellpadding="2" cellspacing="2" width="100%" class="tpm-subelement-table">
		' . (count($contentCells) ? implode('', $contentCells) : '<tr><td>&nbsp;</td></tr>') . '
	</table>
';

Schritt 3:
Fertig! Nun braucht ihr nur noch die entsprechende Seite im Backend anschauen und euch davon zu überzeugen :)

Personas für Firefox

persona

Ihren Browser individuell anpassen? Das hat Firefox mit “Personas” möglich gemacht. Auf der Seite getpersonas.com kann man mit der Maus über ein kleines Vorschaubild navigieren und Firefox verkleidet sich in ein komplett neues Design. Mit einem Klick auf “Wear It” ist dieses Design dauerhaft auf deinem Firefox installiert.

Eine klasse Idee und extrem einfach. Deshalb hat sich coma Gedanken gemacht, wie man ein “Persona” auf der eigenen Seite integrieren kann. Mit dieser Methode können Seiten über den definierten Anzeigebereich hinauswachsen und mit dem Design des Browsers verschmelzen, was  zu einem ganz neuen Surf-Erlebnis führen würde.
Dieser Blogeintrag hat ein “Persona” integriert, das man, wenn sie man der Maus über das obige Bild des Eintrags fährt, angezeigt bekommt.

Dazu sollte die Seite, die man dafür nutzen möchte, als “vertrauenswürdig” im Browser gekennzeichnet sein. Das muss jeder Seitenbesucher selbst einstellen.

Hier eine kurze Anleitung:

  • Navigieren Sie im Browsermenü auf “Extras” und anschließend auf “Einstellungen…”.
  • Makieren Sie den Reiter “Sicherheit” und klicken Sie auf den Button “Ausnahmen”.
  • Geben Sie hier eine Seite an, die ein Persona anbietet (hier “www.comander.de”) und bestätigen Sie dies mit dem Button “Erlauben”.
  • Klicken Sie im Anschluss auf “Schließen” und bei den Einstellungen auf “OK”.
  • Wenn Sie mit der Maus über das obige Bild fahren, sollten Sie das “Persona” sehen können.

Wer selber ein Persona auf seiner Seite nutzen möchte, schaut sich am besten diesen Artikel an: Personas Previewing Code

Viel Spaß beim Programmieren.

Die Bahn – Auch in Social Media zu spät

ueberfuellter-zugMan kann jetzt die Deutsche Bahn AG auf Facebook gefällt-mir-en. Mit einer eigentlich gut durchdachten Aktion hat die Bahn auch in knapp 34 Stunden 4.000 Fans generiert. Es gibt ein nettes Spiel mit guten und attraktiven Gewinnen, es gibt Sonderkonditionen für die Facebook-Fans, die dort exklusive Sonderrabatte in Anspruch nehmen können. Die Seite sieht auch nett aus, es gibt eine Art eigenes CI mit klarer Verbindung zu Facebook, das Teilnahmeformular zum Gewinnspiel fragt keine unnötigen Infos ab und alles in allem würde ich die ganze Aktion als gelungen bezeichnen. Weiterlesen

Was würdest du tun, wenn…

… all deine Facebook “Freunde” an einem Tag zusammenkommen würden?!

Passend zur Einführung des neuen Smartphones HTC Wildfires startet eine Kampagne, bei der jeder Facebook User seine Idee, für einen gemeinsamen Tag mit seinen Facebook “Freunden” abgeben kann. Am Ende der Aktion wird die beste Idee verwirklicht.
Eigentlich eine nette Idee. Aber möchte man wirklich alle Facebook “Freunde” an einem Ort treffen? Den Ex-Freund, den man eingentlich nie wieder sehen, aber weiterhin den Beziehungssatus auf Facebook überprüfen will, oder die alte Grundschulfreundin, mit der man nur aus Höflichkeit befreundet ist?!

HTC

Warum eigentlich nicht?! Die größte Sandburg der Welt zu bauen oder zusammen am Brandenburger Tor ein großes Picknick zu machen klingt ja gar nicht schlecht…

Mülltr-ennung – Ihgitt

45053da8dd

Lange Zeit schien München das Mekka für alle Mülltrennfeinde aus dem trennungsgeplagten Umland zu sein, in dem die verschiedenen Müllsorten quasi manuell auf eigens eingerichtete, euphemistisch als „Wertstoffsammelsstellen“ bezeichnete Lager getragen werden müssen.

Warum trennen was zusammen gehört, war die hauptstädtische Devise und so wurde der komplette Hausmüll schön in die neu gebaute Verbrennungsanlage gekarrt. Inzwischen findet auch hier ein Umdenken statt und letztlich ist auch die Mehrheit der coma Mitarbeiter davon überzeugt, dass Mülltrennung erstmal der richtige Weg ist (solange es keine  vollautomatische Trennung gibt).

Maßgeblich für den Sinneswandel in der Redaktion verantwortlich ist natürlich die Kampagne des Abfallwirschaftsbetriebs München. In dieser wird schön veranschaulicht, welche semantischen Katastrophen durch die unsachgemäße Trennung zusammengesetzter Nomen entstehen können. Pfui!

FMX 2010 – 10 / GUI User Interface

logo

10 / GUI – User Interface von Clayton Miller

Bei der Flashconference 2010 hat Clayton Miller seine bemerkenswerte Vision eines neuartigen Bedienkonzeptes für die Nutzung von Desktop PC´s vorgestellt. Das 10/GUI funktioniert durch Multitouchinteraktion mit beiden Händen und bis zu zehn Fingern. So ist es dem Benutzer möglich mehrere interaktionen gleichzeitig auszuführen.

10 / GUI VIDEO

ERGONOMIE

Bei Touchscreens ist – wie der Name schon sagt – der Screen und das Touchpad zusammengefasst. Das ist schön und gut, aber für längere Arbeiten nicht geeignet, da entweder der Nacken oder der Touch-Arm belastet wird.

Snap4

Das 10/GUI ist vom Screen getrennt und ermöglicht dadurch dem User die Hände bequem auf dem Tisch in einer Ruhehaltung abzulegen. So wie wir es bei der Mouse kennen.

Snap7Snap3

SOFTWARE

Da es in den gängigen Betriebssystemen noch schwierig ist mit einem Touchpad zu navigieren hat sich Miller auch Gedanken über eine benutzerfreundliche Benutzeroberfläche gemacht die auf das 10/GUI abgestimmt ist. “Con10uum” genannt. Dabei gestaltet er das Windowverhalten von Desktopapplikationen um.

Fenster werden nicht mehr unordentlich übereinander, sondern horizontal nebeneinander angeordnet. Die fenster nehmen sich Kontextabhängig ihren Raum und verdrängen andere Fenster nach links und rechts.

Snap10Snap11

Die Fenster lassen sich dann mit drei Fingern verschieben und skalieren. Mit vier Fingern kann man durch alle Anwendungen scrollen und aus der Reihe der Anwendungen herauszoomen und hineinzoomen. Natürlich ist es dann auch möglich mit beiden händen gleichzeitig zu arbeiten. Also z.B. mit der einen Hand aus allen Anwendungen rauszoomen und gleichzeitig Fenster verschieben oder skalieren.

Zoomt man aus den Anwendungen komplett heraus, bekommt man eine Thumbnailansicht aller Anwendungen.

Snap14

Für den Aufruf des Startmenüs und des Menüs der aktiven Anwendung dienen zwei Tasten, die seitlich neben dem Touchpad angebracht sind.

Snap5

Snap12Snap13

Das Konzept ist noch nicht ganz ausgereift und fraglich ob es in der Form je auf den Markt kommt.

Ich bin ja mal gespannt :)

Quellen:

http://www.10gui.com

Wireframe Tools im Test

Interaktion, Videocontent, Einbindung von Social Media Plattformen usw. unsere Projekte werden immer komplexer und vernetzter. Eine Herausforderung, die schon in der Konzeptionsphase beginnt. Mit welchem Tool lassen sich Wireframes einfach erstellen und effektiv abstimmen?

Auf der Suche nach einem geeigneten Tool war es uns nicht nur wichtig, dass dieses einfach zu bedienen sein sollte, es sollte weitere Kriterien erfüllen:

Das Ergebnis sollte klickbar sein, für den Kunden sollte es möglichst einfach sein, sein Feedback abzugeben, das Tool sollte bestenfalls automatisch einen Strukturbaum generieren, auch mal umfassenden Inhalten auf einer Seite Platz bieten und Textformatierung ermöglichen.

Die Fülle an Programmen und Tools machte es uns nicht leicht. Wir pickten uns einige Tools heraus, die wir genauer unter die Lupe nehmen wollten.

Weiterlesen

FMX 2010 – Social Games in Japan
Fast jeder hat sicher wenigstens einmal ein Social Game gespielt (z.B. Farmville), wohl auf Facebook. In Japan, wo salonfähiges Nerdtum nicht nur eine Modeerscheinung ist, sondern Alltag, sind diese Games extrem beliebt.
items
Japan ist schon immer die vorderste Front in Sachen Spieleentwicklung und -innovation. Letztes Jahr schaffte es eine handvoll Firmen, in den dort geradezu explodierenden mobilen Social Networks, je über 100 Mio USD an Einkünften zu erwirtschaften – mit dem Verkauf von virtuellen Gegenständen in Social Games.

Am Freitag auf der fmx berichtete David Collier, CEO von Pikkle, einem Social Game Publisher in Tokio aus der Welt aktueller populärer Spiele.
FMX 2010 – THE GAP – eine interaktive Abenteuerinstallation

florian_mühleggstefan_kolbe

Florian Mühlegg und Stefan Kolbe, zwei Studenten Interaktiver Medien der Filmakademie Baden-Württemberg haben diese Installation auf der FMX 2010 in Stuttgart vorgestellt:

“THE GAP ist ein Augmented Virtuality Adventure Game. In einer interaktiven Rauminszenierung verbindet das Spiel real erfahrbare Objekte mit einem virtuellen Raumerlebnis.
Dabei schlüpft der Spieler in die Rolle eines Forschers, der auf der Suche nach dem magischen Schatz der Xiong-Indianer ein gefährliches Hindernis überwinden muss.”

Das Hindernis, von dem die Rede ist, ist eine 5m lange Hängebrücke, über die es zu balancieren gilt.

hängebrücke

Klingt einfach, ist es aber nicht!

Der Spieler trägt eine VR-Brille mit einer Webcam, welche das Sichtfleld des Spielers erfasst und in den Computer einspeist. Dieser ersetzt dann das grün in der Greenbox durch ein 3D-Szenario. Alles, was nicht grün ist, wird nicht ersetzt. Die Position und Blickrichtung des Spielers wird anhand eines Helms mit Infrarot-LEDs und einer Wii-Sensorik erfasst und damit das 3D-Szenario gesteuert.

action

Somit kann sich der Spieler in dem 3D-Szenario umschauen und seine Sinne werden genial manipuliert.

“Realraum und virtuelle Elemente verschmelzen zu einer “Realität” und schaffen dadurch ein ganz neues Raumempfinden, das auch auf der auditiven Ebene durch ein interaktives Sounddesign spürbar wird – eine neue, immersive Welt entsteht.

Mit einem Head-Mounted-Display, in dem Livebild mit Echtzeit-3D-Bildern kombiniert werden, wird das Abenteuer hautnah erlebbar. Durch das Display kann man die realen Objekte und die virtuelle Umgebung als Einheit wahrnehmen.”

Ich bekam bei dem Anblick jedenfalls ganz schön Höhenangst.

schlucht

123