The WMS standard is a popular choice for delivering map tiles from a web server. When combined with a modern AJAX client (eg. OpenLayers) it can produce a compelling geoweb application, but the download performance of WMS tiles can sometimes be inadequate. The easiest way to improve the WMS tile rendering performance for the end user, is to implement a tile cache.
Here we look at two WMS tile cache applications: TileCache and GeoWebCache.
Although an intelligent AJAX client can improve a web application’s responsiveness, it can still take time for the web server to render the requested WMS tiles. For each tile, the server has to fetch the required data from various databases and files, fetch the rendering parameters (which might be cached), possibly perform a projection transformation, and then finally render a bitmap from this information. This can be a slow process for the end user, and can quickly pose load problems for all but the smallest applications.
TileCache attempts to solve this problem by providing a cache between the WMS map server and the client. It has two methods of operation. The first renders the tile using either MapServer or Mapnick as a rendering back end. The third method can cache WMS tiles fetched from a remote WMS service.
TileCache supports client requests in the form of WMS, WorldWind, or TMS.
TileCache also supports two different cache mechanisms. The DiskCache mechanism stores cached tiles as image files. The MemoryCache mechanism stores data in a memcached instance or cluster. Memory storage is even faster than disk storage, but this not appropriate for a shared web server, or a web server with limited memory. Memcached is a distributed memory object caching system developed by Danga Interactive to enhance the popular LiveJournal.Com site. Information and downloads for memcached can be found here.
TileCache is distributed under the BSD license. It requires Python to be installed on the host server. Further information, downloads, and installation instructions can be found on the TileCache website. A good TileCache Tutorial can be found at the GeoServer.org site.
GeoWebCache is a similar WMS tile cache, but it is implemented using Java instead of Python. It started life as JTilecache, a Google Summer of Code project by Chris Whitney. GeoWebCache is distributed under the GNU General Public License.
As a Java application, GeoWebCache requires a Java Runtime (v1.5 or v1.6) and a Java Servlet Server (eg. Apache Tomcat) to be installed. The GeoWebCache claims it is a fast cache capable of saturating a 100MBps connection with only “modest hardware”.
Unlike TileCache, GeoWebCache typically only runs in a standalone configuration, reading WMS files served by a WMS 1.1.x compliant server. However, it is also shipped with GeoServer in a form that is easier to use with GeoServer and has a smaller memory footprint.
As well as the popular OpenLayers client, the documentation includes well-written examples of how to use GeoWebCache with the Google Maps, Google Earth, and Microsoft Virtual Earth clients.
Further information, installation instructions, documentation and a download can be found at the main GeoWebCache website.