[OSM-dev] NodeJS Tileserver
Peter Körmer
osm-lists at mazdermind.de
Mon Apr 4 22:52:31 BST 2011
Hi
around a month ago, jochen announced [1] a tileserver written in nodejs.
I really liked it and because I also really liked to learn nodejs, I
wrote my own version [2]. It has more features than the original and is
better commented. Also it is able to talk to a current tirex
installation which listens on an unix_dgram socket instead of an udp4 one.
It offers the following calls:
GET /
send a default OpenLayers html showing all configured maps
GET /maps
list all maps with their max/min zoom levels (powers the OpenLayers html)
GET /stats
very detailed statistics about requests, renders and timeouts on a
global, per-map and per-zoom level
GET /tiles/0/0/0.png
deliver the tile or request it from tirex it it doesn't exist yet.
GET /tiles/0/0/0.png/render
directly enqueue the tile to tirex
GET /tiles/0/0/0.png/dirty
mark the tile dirty on disk
GET /tiles/0/0/0.png/status
fetch the stytus of the tile
This Tileserver has a log of useful features
- directly reads tirex config and offers all rendered maps
- very detailed statistics tracking about requests, renders and
timeouts on a global, per-map and per-zoom level
- serve up to 20 zoom-levels (limited by metatile file naming)
- custom cache configurations for arbitary zoom-level ranges
- serving static files from disk
- very low memory footprint (15-30 MB of RSS)
but it's still not feature-complete. It's still lacking those important
features:
- gzip compression for static files
- ip-based request throtteling
To get the latest features (esp.ecially the /dirty call) you need the
not-yet released version 0.5 of nodejs (available from github [3]) but
if you don't need the /dirty-call the current stable 0.4.x will also do.
So, this thing is experimental as nodejs is, so don't use it on your
production system right now :)
Peter
[1]
<http://blog.jochentopf.com/2011-03-03-a-nodejs-tileserver-for-tirex.html>
[2] <http://svn.toolserver.org/svnroot/mazder/node-tileserver/>
[3] <https://github.com/joyent/node>
More information about the dev
mailing list