Webseiten beschleunigen

April 9th, 2010

Was schon seit Monaten die Runde macht, wurde jetzt von Google bestätigt. Die Ladegeschwindigkeit einer Webseite kann ihr Ranking beeinflussen.

In den Google Webmaster Tools gibt es schon seit längerem unter dem Punkt “Labs”->”Site Performance” Details zu der Pagespeed, wie Google (oder besser: der Googlebot) sie sieht. Interessant ist dabei besonders der Graph, der die durchschnittliche Geschwindigkeit der jeweiligen Seite im Vergleich mit anderen Webseiten anzeigt. Der Grüne Streifen zeigt die 20% der schnellsten Webseiten an. Generell sollte man versuchen den Graph der eigenen Webseite möglichst weit in Richtung dieses Bereichs zu bekommen.
google-webmaster-sitespeed

Auf dieser Seite in den Webmastertools gibt Google zum Glück gleich auch Tipps, wie man die Ladegeschwindigkeit seiner Seiten beschleunigen kann. Zu ausgewählten Seiten lassen sich Details dazu anzeigen, was Google an ihnen nicht schmeckt.

Prio 1: Apache konfigurieren

Die Zugriffszeit auf eine Webseite lässt sich vor allem durch das aktivieren der Gzip-Kompression und das Setzen eines Expiration-Dates auf Server-Ebene drastisch beschleunigen. Sind diese beiden Techniken auf Eurem Server nicht aktiviert, machen die Google Webmaster Tools darauf aufmerksam.
Für den Apache 2 Webserver, der wahrscheinlich recht flächendeckend im Einsatz ist, solltet Ihr das expires.html” target=_blank>mod_expires und mod_deflate aktivieren.

Mit dem Expires Modul lassen sich Server-Header senden, die dem Browser sagen, wie lange er bestimmte Seiten cachen soll. Hier muss man natürlich ein bisschen vorsichtig vorgehen, schliesslich will normaler Weise nicht, dass dynamische Seiten gecached werden. Meist bietet es sich an, die Anweisung zum cachen in .htaccess Dateien zu schreiben, die in den Verzeichnissen mit den statischen Inhalten sitzen:

ExpiresActive On
ExpiresDefault "access plus 1 month"

Diese Anweisung teilt dem Browser mit, dass alle Dateien in diesem Verzeichnis und seinen Unterverzeichnissen 1 Monat lang gecached werden sollen. Sind statische und dynamische Dateien gemischt, lassen sich auch nur einzelne Dateitypen cachen:


ExpiresActive On
ExpiresByType image/gif "access plus 1 month"

Wichtig kann dabei die ExpiresActive On Direktive sein. Ich selbst setze die Anweisungen in .htaccess Dateien. Das ganze ist natürlich auch übergeordnet serverweit möglich.

Alleine durch die Kompression des HTML-Codes durch mod_deflate lässt sich die Ladegeschwindigkeit drastisch erhöhen. Bei dieser Seite wurde das Modul Ende Januar aktiviert.
google ladegeschwindigkeit

Was geht noch?

Diese beiden Maßnahmen sollten schon mal einen deutlichen Geschwindigkeitsschub geben. Ansonsten lassen sich noch mehrere CSS oder JS Dateien zusammenfassen, um die Anzahl der Zugriffe pro Seite niedrig zu halten oder statische Grafiken auf eigene Hosteinträge (z.B. img.onlinenerd24.de) auslagern, da die Browser diese Grafiken dann parallel laden können.
Spezialisten könnten ausserdem anfangen die Anzahl ihrer Apache-Threads zu optimieren. Bei Seiten mit größeren Datenbanken solltet Ihr ausserdem prüfen, ob diese vernünftig indexiert sind, oder ob evtl. ein Bottleneck bei den Datenbankzugriffen vorliegt. Auch das kann die Auslieferung einer Webseite drastisch verlangsamen. Un zwar richtig drastisch :)

Sehr hilfreich bei der Analyse der Seitengeschwindigkeit sind diverse Browserplugins. Hier sei vor allem Googles eigene Page Speed Plugin für Firefox und Yslow von (richtig geraten!) Yahoo! genannt. Auch diese Tools geben ganz konkrete Tipps, um individuelle Seiten zu beschleunigen.

Wer eigene Server betreibt, dem kann ich schwerstens das Programm “Munin” ans Herz legen, um die Vital-Statistiken seiner Maschine im Überblick zu behalten.

Was bringts?

Ich denke von dem Geschwindigkeitsgewinn sollte man sich in der Regel keinen wahnsinnigen Ranking-Boost versprechen, vermutlich ist es eher so, dass besonders langsame Seiten abgewertet werden. Aber mit der Beschleunigung eurer Seite tut ihr zumindest etwas für eure Besucher. Denn wer wartet schon klänger als ein paar Sekunden, bis sich eine Seite vollständig aufgebaut hat…

Update

Dies ist der Verlauf des Graphen für die Downloadzeit einer recht Bilder-intensiven Webseite, nachdem ich lediglich mod_expires eingeschaltet habe. Sie ist drastisch gefallen. mod_deflate lief schon länger, hat bei bereits komprimierten Bildern aber eh keien Auswirkung.

Google ist sich also sehr wohl der Unterstützung des Browser-Cachings bewusst. Ich glaube nicht so wirklich daran, dass Seiten mit großen Bildern lediglich aufgrund des naturgemäss längeren ersten Downloads schlechter bewertet werden.

site-speed-apache-expire-images

Mir fällt gerade ein: Eine thematisch gleich gelagerte Seite, ebenfalls Image heavy rankt in der Bildersuche deutlich schnlechter als die aus dem obigen Beispiel. IMHO ein weiterer Hinweis, dass der Bilderdownload das Ranking nicht stark beeinflusst.


Adding Plugins to Ibator

February 20th, 2010

Ibator (formerly knows as ‘Abator’) is an invaluable code generator to create all necessary code to access database tables with the (also pretty invaluable) Java OR framework Ibatis.
Ibator creates a variety of SQL code to easily build here-clauses to acces your tables. The one thing that is missing is support for the SQl “limit” clause which is offered by Mysql and other popular databases.

A guy called harawata has created a plugin for Ibator, which creates code to easily add “limit” clauses to your db-calls. Thank a lot for this (once again invaluable) tool! You might also want to check out his other plugins.

Ok, so now how to add these Plugins to the code generator? You need to compile the classes with ibator.jar in the classpath.

Then enable the Plugin in your ibatorConfig.xml file within the <ibatorContext>:

<ibatorPlugin type=”AddLimitClausePlugin”></ibatorPlugin>

Finally add the resulting Plugin-file to the classpath when calling Ibator:

java -cp ibator.jar:limit.jar org.apache.ibatis.ibator.api.IbatorRunner -configfile ibatorConfig.xml -overwrite

Of course this will also work when starting Ibator from an ant file.


Are ABC and Apple screwing over LOST fans?

February 3rd, 2010

Update:
The Standard Definition version of episode 2 has now been uploaded. Still nothing in HD though. But I think this is pointing to a technical problem at Apple. Way to screw up on the premiere day of one the best shows on TV, Apple!

Last night the final season of LOST started. Apple offers season passes for this season in it’s iTunes store. Previously with these passes you could download episodes as soon as they aired.

It’s has now been 15 hours since the first two episodes of LOST Season 6 aired and they are still not on iTunes. Allegedly the episodes of the new series “Caprica” are delayed 5 days on iTunes! Could it be that ABC made Apple delay LOST before putting it on iTunes?
Also, Apple should be forward in this case and clearly tell when episodes are available, before I actually shell out $50 for the seasons pass.

Of course there is no communication from Apple’s side and I can just hope that a shitstorm breaks loose on blogs and Twitter which warns people of buying TV shows from Apple’s iTunes store.

There is already a mild uproar on Twitter going on among LOST fans.

But probably it’s just a technical issue of some sort. Stay tuned as this story develops…

Update:
I am an iPhone Application developer and had to accept new term of service for putting my Apps on iTunes just today. Probably this also required some maintenance in the store which delays the episodes?


Visualization of an unindexed JOIN in Mysql

February 2nd, 2010

Check the indexes fo your Mysql tables, kids ;) Because this happens when you’ve got a rather complicated join over two not even very big tables. Mysql “slow statements” keep ramping up, consuming a lot of cpu time and (more importantly clogging Mysql, so that other statements have to wait quite a while.
mysql-slow-statement


Google Image Search as a search engine in Google Analytics

January 20th, 2010

Google Analytics displays Image Search as “Refering Sites”, not “Search Engine”. Since I have quite some traffic coming from Image Search I really wanted to know what keywords people were using. Internet Marketing Insight has a great solution that will do exactly that. (I never got other solutions that did the URL rewriting in Javascript to work…)

But you can make this script even more useful by adding country-specific referers (like “images.google.com”, “images.google.de”, etc.). Just add the individual hosts with the specific TLD to the Analytics script:

pageTracker._addOrganic("images.google.com", "prev");
pageTracker._addOrganic("images.google.de", "prev");
pageTracker._addOrganic("images.google", "prev");

This will display the specific TLDs individually in Analytics and catch all the rest under “images.google”.


How to set a arbitrary background color for OS X desktop

January 19th, 2010

Apple only “allows” certain (rather ugly) colors to be set as a solid background color on OS X. I don’t even want to go into how utterly stupid I think this is…

Ok, here’s how you can easily set an arbitrary color on OS X.

  1. Save this 1×1 transparent PNG to your “Pictures” directory.
  2. Open the “Desktop & Screensavers” preferences pane in the “System Preferences”.
  3. Select “Folders / Pictures”
  4. Select the trans.png (might not be visible, but the image square is in the directory listing to the right)
  5. You might have to select “Center”
  6. Now you should see a color selector which lets you set your color.

Here’s how the preference pane should look like:
os x change desktop color


Using Admob to monetize your iPhone Application

December 13th, 2009

Couple of weeks ago I signed up with Admob to try out their iPhone In-App advertising system. Since then Admob has been bought by Google, btw…

I implemented the Admob API into one of my most downloaded free apps, which was really easy. Just add a few libs and classes, place a view and you are ready to go.

The interesting part, of course, was how much money can be made through Admob. Admob uses a CPC-based system, much like Google Adsense. Advertisers book ads on the network, they are shown in your app, as soon as somecone touches the add, he is taken to the advertisers website or to his app in the Appstore. And of course you earn some money.

The App I tried it on has been on the Appstore for about 9 month and has constantly been downloaded roughly 600 times a day. This sums up to about 150.000 downloads.
I have never used any tracking techniques to see how often the app was actually started each day. So I was in for a little surprise when I saw the actual ad impressions for the first day.
I have set the App to display a new ad every 30 seconds. This ads up to about 10.000 ad impressions per day, which was quite a bit higher than I expected.
Click-Through-Rate was also at a rather high 4-5%.

All In all this adds up to a revenue of $20 per day for this app.

So here’s the revenue over the past few days. In the last 3 days revenue went up due to higher CPC and more impressions.
admob-revenue

Here’s the sales stats for the past few months (courtesy of AppViz)
app-sales-appviz

So, suffices to say I am quiet pleased with this return. Not getting rich on this, but it’s still quite some money. With this steady income I estimate the app to pay off after about a month, considering the time I spent developing and after that it’s nice passive income for the time being.

Of course 150.000 downloads is pretty good for an app which has never gotten any widespread exposure. But still it stays in the Top-50 of it’s Appstore category in the major markets and gets a decent amount of downloads.

So probably you are wondering if it’s really that easy to replicate this (although small) success. Well, frankly I think it’s luck that my App seems to be used that much. You need to come up with an idea for an app that is used by a very broad range of users and on a regular basis.

Overall I am pleased with the income from my little app and think that Admob can very well be an alternative for monetizing an iPhone app. With now over 100.000 apps in the store the space on the sales charts gets very tight for paid apps and making even $20 per day from a $-,99 App can be quite difficult.


Google Chrome für OS X

November 26th, 2009

Seit zwei Tagen benutze ich nun Google Chrome für OS X und bin bisher von dem neuen Browser hellauf begeistert. Vor allem die Geschwindigkeit sowohl beim Start, als auch beim Laden und Aufbauen der Seiten ist phänomenal. Bei mir hat sogar der von mir eingesetzte Pre-release den mitlerweile verfetteten und langsamen Firefox ersetzt.

Ein aktuelles Developer Build von Chrome für Apple OS X kann direkt bei Google downloaded werden.

Bisher habe ich einen Absturz erlebt, verursacht durch den gleichzeitigen Download von einem halben Dutzend größerer (300 MB) Files. Was ich noch vermisse ist ein Download-Manager für Chrome, der zB mehrere Verbindungen zu einem Download aufbauen kann.
Hoffentlich wird so eine Funktion bald über eine Chrome Extension verfügbar sein. Diverse Extension sind zum Beispiel auf http://www.chromeextensions.org/ zu finden.

Wer sich nach der Installation einer Extension fragt, wie er sie wieder entfernen kann, muss folgende Seite in seinem Browser aufrufen: chrome://extensions/

Noch ist Chrome für OS X etwas Unrund, es fehlt noch ein Bookmark Manager und an einigen Ecken merkt man noch den Developer status. Für mich ist er aber schon in seiner jetzigen Form produktiv einsetzbar und überzeugt vor allem durch die Geschwindigkeit.


DSLR Video München

November 14th, 2009

Martin Gommel hat vor einigen Tagen auf seinem Blog das Video Karlsruhe in 50mm online gestellt, was mich endlich mal dazu gebracht hat, selbst auch mal mit der Canon 7D los zu ziehen und die Videofunktion ausgiebiger zu nutzen. Heraus gekommen ist folgendes, kleines Filmchen:

Screen shot 2009-11-14 at 10.11.02
Hier gehts zum Video.

Ich habe dabei die gleichen Erfahrungen gemacht wie Martin. Es ist sehr schwer die DSLR stabil zu halten, besonders wenn man dabei noch den Fokus ziehen will. Es ist außerdem nicht ganz einfach, wirklich sauber zu fokussieren. Das ist, denke ich, jedoch eine Übungs- und Konzentrationssache.
Was auch noch wichtig ist: Zeit lassen. Immer viel länger drauf halten, als man es eignetlich für nötig hält. Zum einen braucht man am Anfang und Ende einer Videosequenz genug “Raum” um vernünftige Anschlüsse schneiden zu können und zum anderen sieht man erst beim Schnitt, wie lange man eine Einstellung zeigen möchte. Ich habe ettliche Einstellugen, die viel zu kurz sind, um zusammengeschnitten stimmig zu wirken.

Insgesamt macht das Video shooten aber viel Spaß. Am wichtigsten ist es, glaube ich, einen sauberen Fokus hin zu bekommen. Mit ein bißchen Bildwackeln kann ich noch leben. Ich habe mit der 7D schon einige Probevideos vom Stativ geschossen und die sehen mir immer ein wenig zu statisch und langweilig aus.

Wärend ich diese Zeilen geschrieben habe, hat der Amazon-Mann gerade den Manfrotto Videokopf gebracht. Das Gerät wird natürlich auch gleich getestet :)


Foto-Rader.De – Blog Aggregator für die deutsche Foto-Szene

September 27th, 2009

Foto-Radar.de ist ein Blog/News Aggregator, der sich auf deutschsprachige Foto-Blogs spezialisiert hat. Auf der Startseite finden sich im die aktuellen Artikel von 60 Blogs. Auf weiteren Seiten präsentiert der österreichische Fotograf Manfred Huszar aktuelle Bilder aus Foto-Blogs, Videos zum Thema Fotografie sowie – und das ist für mich am interessantesten – eine aktuelle Übersicht über Diskussionen in Foto-Foren. Schön kann man auf dieser Seite sehen, dass es in Foren mehr um technische Fragen geht, wärend sich die Blogger häufig eher mit dem “großen ganzen” der Fotografie beschäftigen und sich Gedanken über die Bilder an sich machen. Das finde ich selbst auch zielführender, wenn man besser Fotos machen will, aber ich möchte auch den technischen Aspekt nicht aus dem Auge verlieren.

Für mich persönlich macht die doch recht umfangreiche Blogansicht der Startseite nicht so viel Sinn, da ich die Blogs, die mich interessieren lieber per RSS abonniere und dann in chronologischer Reihenfolge lese. Interessant wäre jedoch eine Ansicht ähnlich wie Rivva.de, wo häufig verlinkte Blog-Beiträge besonders hervorgehoben werden.

Ansonsten ist Foto-Radar.de sicher eine gute Übersicht über die aktuellen Themen rund um das Thema “Fotografie”.