Opened 14 months ago
Last modified 13 months ago
#7682 new defect
WMS-cache does not "tile" requests one same boundaries between session resulting in re-requests of already cached areas
| Reported by: | jjaf.de | Owned by: | team |
|---|---|---|---|
| Priority: | normal | Component: | Core |
| Version: | tested | Keywords: | WMS cache hasExactMatch tiling |
| Cc: | jttt |
Description
WMS does pre-load cached areas but since
cache.hasExactMatch()
is false since the viewport is slighty shifted although the complete area can be rendered the whole area is re-requested from WMS-server
Problem
Re-requests are resulting in having a huge cache of [session]-times the size and stress on network and WMS-server.
possible Solution
A solution could be to introduce "tiling" in maybe
downloadAreaToCache()
so that the same bounding-boxes for WMS-requests having shifted viewports are being calculated between sessions or have an algorithm to recognise total coverage from cache instead of
cache.hasExactMatch()
I would suggest the former is easier to implement maybe with help from the tiling-projection.
Workaround
Set viewport to exactly same coordnates and zoom before adding WMS-layer with cache e.g. by using "Jump To Position".
Attachments (0)
Change History (4)
comment:1 Changed 13 months ago by bastiK
- Cc jttt added
- Type changed from enhancement to defect
comment:2 Changed 13 months ago by stoecker
We have WMS bookmarks, which solve this issue already. THought maybe a tiled approach and some sort of "native" request levels would be a good idea.
comment:3 Changed 13 months ago by jttt
WmsLayer already has tiling, method getImageXIndex() convert coordinate to tile index. But scale needs to be exactly the same as before (that's what WMS bookmarks are for).
comment:4 Changed 13 months ago by bastiK
Native request levels may decrease the image quality in some cases, but I guess for the average user, it would be an improvement.



When scale matches exactly, the cache should be used.