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.

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?