我在地图中有很多图块层。因此,当我缩放或移动地图时,所有图层都会向服务器发送wms请求。如何通过将不同图层的请求合并到单个请求来缩放地图,从而减少HTTP请求?
答案 0 :(得分:1)
与地图进行交互时,您可以使用maxTilesLoading选项更改Openlayers同时发送的异步请求的数量,即:
var map = new Map({
maxTilesLoading:5,
layers: [
new TileLayer({
source: new OSM()
})
],
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
})
});
默认值为16,但是如果要加载的磁贴需要花费一两秒钟,则最终会导致大量未完成的请求积压,待处理的服务器正在处理该请求。这是因为浏览器只能同时向服务器发送10-20个活动的HTTP请求。如此一来,请求将一直挂起,直到队列减少。从浏览器发送到服务器的请求数量不断增加,只是等待请求队列减少,这样站点才能停止运转。不断移动/缩放地图会从浏览器向服务器发送大量的http请求。使用maxTilesLoading减少此操作可减少使请求数量超载的机会。值得权衡的是,随着一系列工作的进行,地图的加载速度可能会稍慢一些,但在与地图交互时,整体性能会大大提高。
答案 1 :(得分:0)
如果所有WMS图层都来自同一服务器,则可以将它们组合成单个ol.layer.Layer
对象,更准确地说是在一个源对象中,通过在逗号分隔列表中定义每个图层(在{{1}下)参数):
'LAYERS'
您还可以尝试减少请求数量/提高整体效果: