issues with "refresh layer" using microsoft edge

135
2
Jump to solution
12-10-2021 04:47 AM
DiegoGuidi
New Contributor III

I have built a webgis using Web AppBuilder and the map that the WebGIS shows has a layer from a shapefile that is updated periodically, so I simply set the "refresh layer" parameter.

I see no issues at all using google chrome, but using microsoft edge (actually in a different environment, but  with the same ArcGIS Enterprise version) actually the refresh does not work, until I open the devtools and  manually disable the cache.

I've done some checks and I see that, in my environment, chrome does two operations to update the data:

  1. A call to the export service using a POST
  2. A call to _ags_map to obtain the new png image using a GET

The post is never cached by HTTP design (AFAIK) and the GET contains a guid in the url, so cache is never done because the http address is always different.

What happens, in another other environment, using edge is a bit different: a single call to export service using a GET is done (repeated every time the layer needs to be changed), and the url is precisely the same everytime; this means that the data is cached and the cached image is returned; zooming or resizing the screen means that the url of the request is changed, the cache is avoided and the data is shown.

Anyone experienced this behavior? I have no way to do other tests to verify if this is actually a browser issue or there's other things related, because either in my environment edge is not allowed and in the other environment it's chrome that is not allowed....

0 Kudos
1 Solution

Accepted Solutions
DiegoGuidi
New Contributor III

ok issue fixed, and of course the browser is not related at all :)

I must admit that this was hard to find, but basically the issue is related to two different layer configurations in the two environments, so I was able to reproduce the issue.

Basically speaking, if I publish the data "as is", the webgis retrieve the map image using a GET requesto to "export?dynamicLayers" service, so a single GET can be used to retrieve ALL the data for ALL the layers (clever), but the data is cached if map extents or layer names are not changed (not so clever, if you configured a layer to be refreshed periodically...)

If I use the ESRI ArcGIS Enterprise map viewer (where I can configure the layers shown in the map and the properties of each layer, refresh period included) to change a property of the symbol (as example, the size), now the WebGIS needs to make two different requests each time: a json POST to tell the server to generate an image with the correct symbol size, and a GET to the new png image for the single layer.

Those two requests are not cached at all.

Hope this helps someone.

 

View solution in original post

0 Kudos
2 Replies
DiegoGuidi
New Contributor III

I actually replied the same behavior in my environment adding the layer as "WMS Layer", and not as a standard mapserver layer.  With this, in my environment the data is fetched using a GET that is cached.

But I can confirm that the other environment is configured with a standard "mapserver" layer.

0 Kudos
DiegoGuidi
New Contributor III

ok issue fixed, and of course the browser is not related at all :)

I must admit that this was hard to find, but basically the issue is related to two different layer configurations in the two environments, so I was able to reproduce the issue.

Basically speaking, if I publish the data "as is", the webgis retrieve the map image using a GET requesto to "export?dynamicLayers" service, so a single GET can be used to retrieve ALL the data for ALL the layers (clever), but the data is cached if map extents or layer names are not changed (not so clever, if you configured a layer to be refreshed periodically...)

If I use the ESRI ArcGIS Enterprise map viewer (where I can configure the layers shown in the map and the properties of each layer, refresh period included) to change a property of the symbol (as example, the size), now the WebGIS needs to make two different requests each time: a json POST to tell the server to generate an image with the correct symbol size, and a GET to the new png image for the single layer.

Those two requests are not cached at all.

Hope this helps someone.

 

0 Kudos