ArcGIS Server Image Caching

As luck would have it, I made my way to the ESRI User Conference this year out in San Diego (I wrote a piece about it - check around August ‘06). One of the interesting things they were showing was the new default web interface for ArcIMS and ArcGIS Server 9.2.

I have to say it’s pretty impressive. One might be tempted to scold them for ripping off Google Maps, but I wouldn’t be one of those people. If somebody gets it right, emulating them isn’t a bad thing, and Google got it right.

But one thing I saw I knew just couldn’t be happening. They were panning, zooming, and hopping around on a web interface and there was virtually no lag time. I mean nearly zip.

Now, I know a bit about web mapping software and ArcIMS (and its SDE backend) in particular, and there is simply no way that was happening. SDE can’t receive a request that fast, let alone process it and send a response, and ArcIMS certainly can’t render an image that quickly. What I was seeing was not possible. Not as in “Boy, that just shouldn’t be possible!”, but as in “That’s grade-A expletive“.* Not one to dump on somebody else’s parade, particularly when I’m outnumbered 10,000 to 1, I kept my mouth shut.

My group had a three hour technical demo of ArcGIS Server 9.2 the other day from ESRI, and I got the scoop about what we were seeing.

9.2 is capable of serving up maps in two different ways. The first way is the traditional way - ArcIMS or ArcGIS Server connect to SDE for the data and renders the map image dynamically. I can tell you that even with small data sets on ESRI servers set up by ESRI themselves, ArcGIS Server is profoundly slow at dynamic mapping. When we first talked to ESRI about ArcGIS Server (9.1), they said in no uncertain terms that you do not what to use ArcGIS Server for web applications, ever. I think that’s probably still true if you’re making traditional dynamic mapping sites.

What we were seeing at the ESRI conference, however, was something else. ArcGIS Server can do what they call “image caching”. Basically, you have fixed map layers and rendering and a fixed list of possible map scales, and ArcGIS Server pre-creates map images in tiles with your data at every map scale (depending on the data extent and scale, you could be talking many, many thousands of images). When you pan and zoom around the map, you are looking at pre-generated, static images. Essentially, to pan and zoom around a map, no GIS software (or software performing “real” GIS work) is really involved at all. Which, of course, makes it extremely, unbelievably fast.

Not that that is a bad thing. There are some practical applications for image caching. If your user doesn’t need to turn layers on and off, and if they don’t need to worry about extremely current data, image caching actually makes a lot of sense. Speed is greatly increased, server load goes down, and theoretically it should be more stable as there are less moving parts. Again this is something lifted from Google Maps, and again I’d say I have no problem with that whatsoever.

But you should bear in mind what you’re seeing at these demos. If you see an ArcIMS or ArcGIS server demo and say to yourself, “There’s no way it can be that fast,” you may not be looking at what you think you’re looking at.

*Yes, I actually thought the word expletive. If you prefer to think in more colorful terms, imagine what might come from the western end of an east-bound ferret.

I would also note that several of the demo apps exploded, but that would be cruel. Please disregard.