Statistieken januari 2013

De maand december was al een heel succesvolle maand met bezoekersaantallen en bekeken pagina’s. De groei van december was al ongeveer 25% ten opzichte van november, maar januari heeft dit ruimschoots beter gedaan dan de vorige maand, want er is een groei van 28% in bezoekersaantallen en er zijn 30% meer pagina’s bekeken ten opzichte van december 2012! De grootste groei ooit.

Maand Bezoeken Pageviews Percentage bezoeken Percentage pageviews
Oktober 2012 2626 6734
November 2012 3268 8170 + 24.45% + 21.32%
December 2012 3864 10 332 + 17.5% + 26%
Januari 2013 4946 13 640 + 28% + 32%

Persoonlijk ben ik erg blij met deze groei en ik had het ook zeker niet verwacht. Sowieso is het leuk om een vaste groep terugkerende lezers te hebben, daar kan ik op bouwen en van die feedback kan ik leren!

Korte downtime

Vanmiddag is het domein razem.nl, mvandek.nl en ihavetheknowledge.nl een half uur offline geweest ivm vervanging van een wasemkap, waardoor de server uit moest. De server staat weer aan en ook de nieuwe wasemkap werkt als een zonnetje.

WordPress Bookmarks list with description

I saw this piece of code in a file from a theme and I wanted to share it with you. It’s a very nice piece of code that shows all the links per category, with description. So good, you don’t even have to change it any more.

Here’s the code:

<?php $args = array(
'title_li' => false,
'title_before' => '<h2>',
'title_after' => '</h2>',
'category_before' => false,
'category_after' => false,
'categorize' => true,
'show_description' => true,
'between' => '<br />',
'show_images' => false,
'show_rating' => false,
);
wp_list_bookmarks( $args ); ?>

You can find a working example here.

Async Javascript Piwik tracking code

By default Piwik uses a very long piece of Javascript code with a lot of variables. But a lot of this code can be removed to speed things up. I came up with this code, based on the Google Analytics tracking code that works perfectly fine for the Piwik Javascript Tracking code:

<script type="text/javascript">
var _paq = [
['setSiteId', <Site ID in Piwik>],
['setDoNotTrack', 1],
['setTrackerUrl', 'http://<webhost>/piwik.php'],
['trackPageView'],
['enableLinkTracking']
];
(function()
{
var g = document.createElement('script'); g.type = 'text/javascript'; g.async = true; g.src = '//<address on which piwik.js is located>/piwik.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(g,s);
}
)
();
</script>

The code has been de-minified and a few things are important:

  • setSiteId – You have to set the SiteID correctly. You can find this ID in Piwik > Settings > Websites
  • setTrackerUrl – On which webhost is Piwik located? This URL has to refer towards that address or otherwise statistics cannot be collected!
  • setDoNotTrack – If people have configured their browser to send the DoNotTrack header, respect this and do not track those people in the statistics.
  • g.src – You can use another webhost to serve piwik.js for speed optimization. Preferably from a cookie-free domain.

The full minified tracking code:

<script type="text/javascript">
var _paq = [['setSiteId', X],['setDoNotTrack', 1],['setTrackerUrl', 'http://stat.domain.com/piwik.php'],['trackPageView'],['enableLinkTracking']];(function(){var g = document.createElement('script'); g.type = 'text/javascript'; g.async = true; g.src = '//cdn.domain.com/piwik.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(g,s); })();
</script>

Show related posts in WordPress without a plugin

There are plugins that provide you with the ability to show related posts below a post. But it’s possible to do this without using plugins.

This code uses tags attached to posts to show 5 related posts in a list.

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID), // do not display the current post
'showposts'=> 5, // Number of related posts that will be shown.
'no_found_rows' => true
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo '<h3>Recommended posts to read</h3><ul>';
while ($my_query->have_posts()) :
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Open <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; echo '</ul>'; }}
wp_reset_postdata();
?>

You should place it below the content in single.php.

Stroomstoring

Er heeft een stroomstoring plaatsgevonden en als gevolg daarvan zijn een aantal websites ongeveer 1.5 uur onbereikbaar geweest. Ik was namelijk aan het sporten toen het gebeurde..

De websites + email is weer opgestart en werkt naar behoren!

Registratie staticcdn.nl

Zojuist heb ik het domein staticcdn.nl geregistreerd om vanaf dit nieuwe domein enkel statische content te serveren voor maartenvandekamp.nl. Eerder werd deze content van een subdomein – s0.maartenvandekamp.nl – geserveerd maar na research op internet bleek dat een onafhankelijk domein enkele voordelen had.

MaartenvandeKamp.nl versnellen

Het dagelijkse aantal bezoekers stijgt langzaam maar zeker naar nieuwe nog-niet-eerder-verkende-hoogtes en ik wil de site zo snel mogelijk maken zonder een volledige front-end cache zoals Varnish in te zetten. Dus zoek ik het bij de back-end.

WordPress.com heeft Batcache ontwikkeld en deze cache maakt gebruik van memcached. Memcached kan 1 ding heel goed en dat is informatie opslaan in het geheugen. Het geheugen is tientallen malen sneller dan een harde schrijf en ideaal als plek om informatie op te slaan om die later weer op te vragen.

Sinds vanavond maakt MaartenvandeKamp.nl gebruik van een memcached cache voor objecten. De pagina wordt bij het eerste bezoek door PHP gegenereerd en vervolgens opgeslagen in het memcached geheugen. Als er opnieuw een pagina wordt opgevraagd, dan zal WordPress eerst aan memcached vragen of de informatie daar beschikbaar is. En als dat zo is, dan wordt het direct daaruit geserveerd. Staat het er niet in? Dan wordt de aanvraag doorgestuurd naar PHP om verwerkt te worden.

Momenteel wordt elke pagina een uur gecached om te testen wat het effect daarvan is op de gebruikerservaring. De laadtijd is voor de voorpagina, wat een vrij zware pagina is, bijna gehalveerd van 800ms naar 450ms. Daar ben ik heel tevreden over en ik hoop dat de gebruikers er ook plezier aan beleven.

Follow knop

WordPress.com heeft sinds september 2011 de Follow button, een knop rechtsonderin waarmee bezoekers zich eenvoudig kunnen abonneren op nieuwe artikelen van een blog. Dit werkt alleen op WordPress.com websites maar er is een plugin geschreven die werkt met Jetpack.

Helaas was de code een beetje verouderd en daarom heb ik de code van WordPress.com gepakt en de code van de plugin geupdate zodat de layout exact overeenkomt met die van WordPress.com. Bewonder hem nu op MaartenvandeKamp.nl!

Herken de knop

Ingeklapt zie je het volgende rechtsonderin het scherm verschijnen:
Follow button WordPress.com

En uitgeklapt:

Follow Button ExpandedAlle gegevens worden doorgegeven aan de Subscription Widget die met Jetpack meekomt zodat een registratie zonder problemen aan WordPress.com wordt doorgegeven.