Index: src/django_gheat/website/tile.py
===================================================================
--- src/django_gheat/website/tile.py	(revision 9186)
+++ src/django_gheat/website/tile.py	(revision 9188)
@@ -4,4 +4,5 @@
 #
 # Rick van der Zwet <info@rickvanderzwet.nl>
+from django.core.cache import cache
 from django.core.management import setup_environ
 from django.db.models import Max
@@ -260,22 +261,34 @@
 # Create your views here.
 def serve_tile(request,zoom,x,y):
+  """
+  Showcase on caching and tile generation:
+
+  To make it 'easy' we use two types of caching here, memory cache expiring
+  at 30 seconds and database cache, always persistent storage on database.
+  """
+
   hash_key = TileCache.make_key("%s %s %s %s" % (zoom, x ,y, request.GET.urlencode()))
-  try:
-    d = TileCache.objects.get(key=hash_key)
-    data = d.data
-  except TileCache.DoesNotExist:
-    #log.setLevel(logging.DEBUG)
-    filter = {}
-    colour = (255,0,0)
-    for key, value in request.GET.iteritems():
-      if key == 'colour':
-        colour = tuple(map(int,value.split(',')))
-      else:
-        filter[key] = value
-    now = time.time()
-    im = make_tile(int(x),int(y),int(zoom),filter=filter,colour=colour)
-    log.info("Processing time: %s" % (time.time() - now))
-    data = im.get_image('png')
-    r = TileCache.objects.create(key=hash_key,data=data)
+  data = cache.get(hash_key)
+
+  if not data:
+    try:
+      d = TileCache.objects.get(key=hash_key)
+      data = d.data
+      cache.set(hash_key,data, 30)
+    except TileCache.DoesNotExist:
+      #log.setLevel(logging.DEBUG)
+      filter = {}
+      colour = (255,0,0)
+      for key, value in request.GET.iteritems():
+        if key == 'colour':
+          colour = tuple(map(int,value.split(',')))
+        else:
+          filter[key] = value
+      now = time.time()
+      im = make_tile(int(x),int(y),int(zoom),filter=filter,colour=colour)
+      log.info("Processing time: %s" % (time.time() - now))
+      data = im.get_image('png')
+      cache.set(hash_key,data, 30)
+      r = TileCache.objects.create(key=hash_key,data=data)
 
   response = HttpResponse(mimetype="image/png")
