Roel De Nijs
2014-11-04 16:32:27 UTC
We have a web application displaying some geographical data (about the sewerage system) and using OpenLayers 2.13.1 as front-end library (geoserver as back-end). Currently we have +- 30 object (feature) types. Every object type has a WMS and WFS layer in the map. The visibility of each object type is dependent on a minimum/maximum zoom level and/or can be turned off by the user. The user can perform a set of standard functions on the map (zoom, pan,...) and each feature (hover, select, double click,...).
Everything works fine, but the main criticism about this application is (very) poor performance, being (very) slow and making the browser freeze. Sometimes the only option is to close the browser and start again. Not the most user-friendly approach.
We did some testing related to the performance. One of the things we noticed, WFS data has a huge impact on performance. From a certain zoom level, the WFS data (for all layers) retrieved the server is 750KB - 1MB (and that's the gzipped version). It takes some time to load all this data (certainly if the user is on the road) and also to process the data. If you zoom and pan a few times, you'll probably have to close your browser (mostly IE) and start over again. Users sometimes have to wait 15-20 seconds before a pan or zoom request has finished, which is inacceptable from a user's point of view.
I can't imagine this application is the only one having to deal with so much WFS data, so I was wondering how other developers managed big amounts of WFS data and keeping their web application responsive while loding/processing the WFS data.
Or maybe some alternative/work-around exists to get rid of the WFS layers/data, but still keep the feature functions (like hovering, (multiple) selection, box selection, double click,...)?
Another path I have already experimented with is loading the WFS data on-demand, because the user is probably not interested in all features but only in some of them. Using the GetFeature control I'm able to get the features underneath the mouse cursor. But I'm wondering how I can incorporate all other feature functions. Because e.g. the Select control uses a wfs layer, but the layers doesn't contain features anymore.
I'm really desperate, so I appreciate all insights, suggestions, pointers, hints, a lot! :)
Roel De Nijs
Senior Java Developer
Volg Aquafin op Facebook<https://www.facebook.com/AquafinNV> | Twitter<https://twitter.com/aquafinnv> | YouTube<http://www.youtube.com/channel/UCk_4P5BJ-MtEEDCkCsR_KqQ?feature=mhee> | LinkedIN<http://www.linkedin.com/company/aquafin/products>
Disclaimer: zie www.aquafin.be<http://www.aquafin.be> P Denk aan het milieu. Druk deze mail niet onnodig af.