AnsweredAssumed Answered

Why is WebTiledLayer performance horrible?

Question asked by Crittermap on Jun 12, 2018
Latest reply on Oct 17, 2018 by Crittermap

Why is WebTiledLayer being super slow on purpose?

 

Both I and a colleague see this problem.

 

Using WebTiledLayer with some custom urls.

 

For control group, we used World Topographic Map.

Yes, I know this could be done with a different class also, but just for comparison.

We also used other servers from Canada, Australia and Tasmania.

 

We tried this simple test:

Zoom in by several steps quickly from zoom 7 to 15

 

World Topographic Map worked very fast. You can see the difference fairly soon.

We notice via the logs that World Topographic Maps is download all levels between 7 and 15, but it does so quickly.

06-12 08:22:04.605 511-1749/.... key:  11,344,727 url:  https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/11/727/344/
06-12 08:22:04.605 511-1768/... key:  11,344,730 url:  https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/11/730/344/
06-12 08:22:04.606 511-1800/...: key:  11,343,731 url:  https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/11/731/343/

You notice there is only milliseconds or less between requests.

 

We tried with another server template from Toporama WMS in Canada. (Yes, I know that there are WMS classes too, but I am making a comparison).

 

You are waiting for five or ten minutes for the screen to refresh.

It is still downloading all the levels - but taking its time. 

06-12 08:50:31.190 511-29904/... key:  9,106,160 url:  http://maps.geogratis.gc.ca/wms/toporama_en?version=1.1.1&request=GetMap&format=image/png&bgcolor=0xFFFFFF&exceptions=application/vnd.ogc.se_inimage&srs=EPSG:900913&layers=vegetation,builtup_areas,designated_areas,hydrography,hypsography,water_saturated_soils,landforms,constructions,road_network,railway,aeronautical_network,structures,power_network,boundaries,feature_names&bbox=-11740728,7435794,-11662456,7514066&width=256&height=256
06-12 08:50:32.180 511-29907/... key:  9,105,158 url:  http://maps.geogratis.gc.ca/wms/toporama_en?version=1.1.1&request=GetMap&format=image/png&bgcolor=0xFFFFFF&exceptions=application/vnd.ogc.se_inimage&srs=EPSG:900913&layers=vegetation,builtup_areas,designated_areas,hydrography,hypsography,water_saturated_soils,landforms,constructions,road_network,railway,aeronautical_network,structures,power_network,boundaries,feature_names&bbox=-11818999,7592337,-11740728,7670609&width=256&height=256
06-12 08:50:33.145 511-29909/... key:  9,106,157 url:  http://maps.geogratis.gc.ca/wms/toporama_en?version=1.1.1&request=GetMap&format=image/png&bgcolor=0xFFFFFF&exceptions=application/vnd.ogc.se_inimage&srs=EPSG:900913&layers=vegetation,builtup_areas,designated_areas,hydrography,hypsography,water_saturated_soils,landforms,constructions,road_network,railway,aeronautical_network,structures,power_network,boundaries,feature_names&bbox=-11740728,7670609,-11662456,7748880&width=256&height=256
06-12 08:50:35.675 511-29910/... key:  9,107,157 url:  http://maps.geogratis.gc.ca/wms/toporama_en?version=1.1.1&request=GetMap&format=image/png&bgcolor=0xFFFFFF&exceptions=application/vnd.ogc.se_inimage&srs=EPSG:900913&layers=vegetation,builtup_areas,designated_areas,hydrography,hypsography,water_saturated_soils,landforms,constructions,road_network,railway,aeronautical_network,structures,power_network,boundaries,feature_names&bbox=-11662456,7670609,-11584185,7748880&width=256&height=256

 

As you see, it waits between one and five seconds before it even makes a request.

Can we blame the server? No, because the SDK isn't trying too hard.

Slow Web Tiled Layer

 

A colleague in Canada has the same performance.

Somehow, our colleague in Vietnam did not see this problem, even though he is much farther from the server.

 

I tried it with many other servers that were pretiled, including some obviously using MapServer or ImageServer:

 

http://services.thelist.tas.gov.au/arcgis/rest/services/Basemaps/Topographic/ImageServer/tile/{l}/{y}/{x}/ 

 

It appears you have some code like this:

 

foreach(tile in tilesNeeded)

{

   //we want to make sure anyone not using ArcGISOnline looks bad.

   if( not from ArcGISOnline)

   { 

      //impose a meaningless delay.

      wait one to five seconds;

   }

  RequestTile(tile);

}

 

What the heck is going on?

Outcomes