I've been making some pretty (but computationally expensive) tiles with TileMill and I'd like to serve them up.

First, I served them straight from TileMill. Every tile gets rendered dynamically, which is simple, but slow.

Next, I exported a region as MBTiles then served it with MBTiles-server. Every tile is served statically, which is fast, but exporting all the tiles is too slow (multiple days).

I'm looking at TileStache, which combines dynamic rendering with caching. I imagine that this means the first time a region is looked at, it will be extremely slow, then quick thereafter.

I have plenty of spare CPU time (8 cores, not being used for anything else) and plenty of disk space (terabytes). I'd really like a server that can:

a) serve cached tiles if available
b) dynamically render tiles if necessary
c) continuously render tiles in the background to maximise the cache hit rate

Is mod_tile the only option? I'd prefer to avoid Apache, and mod_tile's documentation looks messy.

For context, I want to serve tiles for the whole of Australia, down to zoom 15.

3 Answers 3


I had exact same need and ended up building two tools:

  • tilestrata – Pluggable tile server written in Node.js. There's a mapnik plugin and disk cache.
  • tilemantle – A command-line tool for warming the tile cache. It works by sending HEAD requests to the tileserver. Via a special header it can tell tilestrata to skip the cache and render a new tile. You can give it a region, zoom level range, etc. Execute it by hand, or set up a cron job to periodically rebuild different regions/zoom levels. In the tilestrata readme there's an example of how the two can work in tandem.

How about GeoServer? Geoserver's development is guided by the OGC and it is the reference implementation for many geospatial web standards. It was the latter fact that 'sold' it to me when I was looking for something similar to you.

Geoserver provides you with a single and very accessible UI rater than the rather bitty feel of other web-mapping stacks. That's not to say there is anything wrong with such stacks, just that I personally prefer simplicity for deployment, interface and administration.

In addition to the features you request (dynamic rendering, tile caching and seeding of the tile cache), you can also set a 'recycle' rate on tiles so that they get refreshed periodically, ensuring your cache stays up to date as your data changes. Geoserver can also server vector data via WFS and grouped layers. Together with security features, style controls and a very easy UI to manage all of this, I have been very impressed with Geoserver and thoroughly recommend it.

As part of a 'bitty' stack, common alternatives to mod_tile include TileCache and TileLite. These maybe worth a look too.

  • 1
    Hmm, I see your point - but after much effort, I've finally gotten comfortable with all the "bits". Sep 9, 2013 at 6:55
  • Yeah, Mapnik and TileMill are great, but I dropped them in favour of Geoserver. Sep 9, 2013 at 7:00

Geoserver has a nice gui and does a good job. If you wanted to persist with dynamic tiles from tilemill you could have combined that with mapproxy.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.