Как оптимизировать скорость отклика или производительность GeoWebcache из Openlayer Request - PullRequest
0 голосов
/ 31 мая 2018

У меня есть TileLayer, который содержит кучу данных на GeoServer2.13 и делает запрос от клиента браузера с помощью API OpenLayers v4.1.все, что сделано:

1.Открытая карта с проекцией:

var map: any = new ol.Map({
  layers: [
    new ol.layer.Tile({
      source: new ol.source.OSM()
    })
  ],
  target: 'Map',
  projection: 'EPSG:900913',
  controls: ol.control.defaults({
    attributionOptions: {
      collapsible: false
    }
  }),
  view: new ol.View({
    center: [0, 0],
    zoom: 2
  })
});

2.WMS-запрос в виде мозаики True:

layer: new ol.layer.Tile({
      source: new ol.source.TileWMS({
        url: _GESERVER_URL +'geo/wms',
        params: {
          'FORMAT': 'image/png',
          'VERSION': '1.1.1',
          'TILED': true,
          'LAYERS': 'geo':myTileLayer'
        },
        projection: 'EPSG:4326'
      })
    })

3.На GeoServer:

-Layer Data tab SRS:4326
  -Http Setting response header 3600
  -Seeding Executing task 1
  -ZoomLevel 15
  -GridSet:EPSG:900913 and EPSG:4326
  -Metatiling factors 4 by 4
  -Image Format image/jpeg and image/png
  -DiskQuata:3GB
  -TileDimensions:256 x 256

Я также пытался с image / png8, но ускорение не работает вообще.Любая другая конфигурация, необходимая для повышения производительности GeoWebcache?

1 Ответ

0 голосов
/ 01 июня 2018

Вы запрашиваете плитки в другой проекции, в которой отображается ваша карта, что заставляет OpenLayers перепроектировать плитки.Это требует времени и снижает качество.

Удалите линию projection: 'EPSG:4326' из своего слоя WMS.

Также, чтобы быть уверенным, что вы попали в кэш тайла, используйте конечную точку с плиткой, такую ​​как WMTS, а ненадеясь, что ваши плитки попадут в кеш (маловероятно, поскольку вы не указали origin в своей WMS).Подробности см. В примере OpenLayers WMTS .

var parser = new ol.format.WMTSCapabilities();
  var map;

  fetch('https://openlayers.org/en/v4.6.5/examples/data/WMTSCapabilities.xml').then(function(response) {
    return response.text();
  }).then(function(text) {
    var result = parser.read(text);
    var options = ol.source.WMTS.optionsFromCapabilities(result, {
      layer: 'layer-7328',
      matrixSet: 'EPSG:3857'
    });

    map = new ol.Map({
      layers: [
        new ol.layer.Tile({
          source: new ol.source.OSM(),
          opacity: 0.7
        }),
        new ol.layer.Tile({
          opacity: 1,
          source: new ol.source.WMTS(/** @type {!olx.source.WMTSOptions} */ (options))
        })
      ],
      target: 'map',
      view: new ol.View({
        center: [19412406.33, -5050500.21],
        zoom: 5
      })
    });
  });
...