[MapServer] Подскажите, как настроить кеширование

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
timrest
Новоприбывший
Сообщения: 2
Зарегистрирован: 14 июл 2017, 10:51
Репутация: 0

[MapServer] Подскажите, как настроить кеширование

Сообщение timrest » 19 июл 2017, 21:38

Приветствую!
Вводная:
1. Установлен MapServer на Windows7 пакетом MS4W.
2. Настроен map файл, данные берутся из .tab файлов MapInfo и растров.
3. Создана небольшая веб страничка для отображения данных на leaflete.

Соответственно, теперь встала задача, чтобы данные на веб-карте подгружались быстрее.

Насколько я понимаю, можно использовать MapCache.
По инструкции, в Apache\conf\httpd.conf раскомментил подключение mapcache_module и настроил <IfModule mapcache_module>.
Далее настраиваю apps\mapcache\mapcache.xml

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<mapcache>
   <cache name="disk" type="disk">
      <base>C:/ms4w/tmp/ms_tmp/cache</base>
       <!--<symlink_blank/>-->
   </cache>
   
   <cache name="tiff" type="tiff">
      <template>C:/ms4w/tmp/ms_tmp/cache/{tileset}/{grid}/L{z}/R{inv_y}/C{x}.tif</template>
      <xcount>64</xcount>
     <ycount>64</ycount>
     <!-- <format>myjpeg</format> -->
   </cache> 
    
   <source name="mysource" type="wms">
      <http>
         <url>http://127.0.0.1:8080/cgi-bin/mapserv.exe?map=/ms4w/apps/myproject/map/wms-server.map</url>
      </http>
      <getmap>
         <params>
            <FORMAT>image/png</FORMAT>
            <LAYERS>Streets</LAYERS>
         </params>
      </getmap>
   </source>

   <tileset name="mytile">
      <source>mysource</source>
      <cache>disk</cache>
      <grid>GoogleMapsCompatible</grid>
      <grid>g</grid>
      <format>PNG</format>
      <metatile>5 5</metatile>
      <metabuffer>10</metabuffer>
      <expires>3600</expires>
   </tileset>
   
   <default_format>JPEG</default_format>

   <service type="wms" enabled="true">
      <full_wms>assemble</full_wms>
      <resample_mode>bilinear</resample_mode>
      <format>JPEG</format>
      <maxsize>4096</maxsize>
   </service>
   <service type="wmts" enabled="true"/>
   <service type="tms" enabled="true"/>
   <service type="kml" enabled="true"/>
   <service type="gmaps" enabled="true"/>
   <service type="ve" enabled="true"/>
   <service type="demo" enabled="true"/>

   <errors>report</errors>
   <lock_dir>C:/ms4w/tmp/ms_tmp/cache</lock_dir>

</mapcache>
Если запустить тест (http://localhost:8080/mapcache/demo/wms), то отображаются мои данные, и кеш сохраняется (в C:/ms4w/tmp/ms_tmp/cache).

Но, если запускать мою страничку, то ничего не кешируется.
Сижу уже который день туплю и не могу понять, как все же настроить кеширование.

Может нужно что то прописать в самом map файле ?

Помогите, пожалуйста, шаращие люди :|

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: [MapServer] Подскажите, как настроить кеширование

Сообщение Александр Мурый » 20 июл 2017, 22:44

Приведите содержимое "вашей странички".
Редактор материалов, модератор форума

timrest
Новоприбывший
Сообщения: 2
Зарегистрирован: 14 июл 2017, 10:51
Репутация: 0

Re: [MapServer] Подскажите, как настроить кеширование

Сообщение timrest » 21 июл 2017, 15:20

Код: Выделить всё

<html>
	<head>
	<title>Публикация WMS</title>
	<meta charset="utf-8" />
	<!-- Добавляем файлы стилей CSS для библиотеки -->
	<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.5/leaflet.css" />
	<link rel="stylesheet" href="leaflet.groupedlayercontrol.css" />
    <link rel="stylesheet" href="lib/jquery/jquery-ui-1.10.3.custom.min.css" />
	<!--[if lte IE 8]>
     <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.ie.css" />
	<![endif]-->
 
	<!-- Добавляем ссылку на JS-скрипт библиотеки -->
	<script src="http://cdn.leafletjs.com/leaflet-0.7.5/leaflet.js"></script>
	<script src="http://api-maps.yandex.ru/2.0/?load=package.map&lang=ru-RU" type="text/javascript"></script>
	<script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
	<script src="lib/Google.js"></script>	
	<script src="lib/Yandex.js"></script>
	<script src="lib/leaflet.groupedlayercontrol.js"></script>

	
	<link rel="stylesheet" href="lib/opacity/Control.Opacity.css" />
    <script src="lib/opacity/Control.Opacity.js"></script>
        
    
    <script src="lib/jquery/jquery-1.9.1.js"></script>
    <script src="lib/jquery/jquery-ui-1.10.3.custom.min.js"></script>
    <link rel="stylesheet" href="lib/jquery/jquery-ui-1.10.3.custom.min.css" />
    
	</head>
	<body>
	<h3>Карта</h3>
		<div style="width:100%; height:100%" id="map"></div>
		
		<!-- <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> -->
		<script type='text/javascript'>
			var map = new L.Map('map', {center: new L.LatLng(54.19,37.65), zoom: 12, zoomAnimation: false });
			var osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
			var yndx = new L.Yandex();
			var googleLayer = new L.Google('ROADMAP');			
			
			 var basemaps = {
				'Яндекс': yndx,
				<!-- 'OSM': basemap().addTo(map), -->
				<!-- //'Ничего': blank() -->
			};

			var SourceSettlementBorder = L.tileLayer.wms(
				'http://127.0.0.1:8080/cgi-bin/mapserv.exe?map=/ms4w/apps/myproject/map/wms-server.map&', {
				layers: 'SettlementBorderPoly,SettlementBorderLine',
				transparent: true, 
				version: '1.1.0',
				format: 'image/png'}
			);
			var SourceGidro = L.tileLayer.wms(
				'http://127.0.0.1:8080/cgi-bin/mapserv.exe?map=/ms4w/apps/myproject/map/wms-server.map&', {
				layers: 'GidroPoly,GidroLine', 
				transparent: true, 
				version: '1.1.0', 
				format: 'image/png'}
			);
			
			
			var gknLayerParcel = L.tileLayer.wms(
				"http://pkk5.rosreestr.ru/arcgis/services/Cadastre/CadastreWMS/MapServer/WMSServer",
				{
					layers: "21,22,23,24",
					format: "image/png",
					transparent: "true",
					attribution: "<a href='http://pkk5.rosreestr.ru'>Росреестр</a>",
					info_format: "text/html",
					tiled: "tiled"
				}        
			);	
					
			var groupedOverlays = {
				
				"Росреестр": {
				  "Кадастровые участки" : gknLayerParcel
				},
				"Векторные слои": {
				"Границы населенного пункта": SourceSettlementBorder.addTo(map),
				"Гидрография" : SourceGidro.addTo(map),
				}
			 };
			
			L.control.groupedLayers(basemaps, groupedOverlays).addTo(map);
			
			
			function basemap() {
				var attr = 'Data by <a href="http://openstreetmap.org">OpenStreetMap</a>, under <a href="http://www.openstreetmap.org/copyright">ODbL</a>.';
				return L.tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
					opacity: 1,
					attribution: attr
				});
			}	
			
		</script>
	</body>
</html>

VolandF
Интересующийся
Сообщения: 23
Зарегистрирован: 02 окт 2011, 16:58
Репутация: 1

Re: [MapServer] Подскажите, как настроить кеширование

Сообщение VolandF » 01 авг 2017, 07:59

Не вдавался в подробности как устроен leaflet т.к использую Open Layers и там есть источник типа WMTS в котором есть параметр url, указывающий у меня на http://host/mapcache/wmts. В апаче в свою очередь настроено чтобы http://host/mapcache глядел на mapcache.xml, в котором указанно <service type="wmts" enabled="true"/>
Надеюсь эта инфа поможет.

nigun
Новоприбывший
Сообщения: 2
Зарегистрирован: 15 мар 2016, 22:28
Репутация: 0

Re: [MapServer] Подскажите, как настроить кеширование

Сообщение nigun » 30 авг 2017, 19:20

А у меня и в OpenLayers не хочет кеш сохранять,
т.е так работает http://localhost:4660/mapcache/demo/wms
атак ни в какую:

Код: Выделить всё

 new ol.layer.Tile({
            source: new ol.source.TileWMS({
                url: 'http://localhost:4660/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/link_wms.map',
                params: { 
			'LAYERS': 'link,build',
			'TILED': true,
			'FORMAT': 'image/png',		
		       'VERSION': '1.1.1' 
		},
		serverType: 'mapserver',
            })
          })
куда глядеть?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: [MapServer] Подскажите, как настроить кеширование

Сообщение Denis Rykov » 31 авг 2017, 02:55

Запустите работающий пример, откройте консоль браузера, посмотрите какие запросы уходят к MapCache, так будет понятно какой URL использовать.
Spatial is now, more than ever, just another column- The Geometry Column.

nigun
Новоприбывший
Сообщения: 2
Зарегистрирован: 15 мар 2016, 22:28
Репутация: 0

Re: [MapServer] Подскажите, как настроить кеширование

Сообщение nigun » 31 авг 2017, 08:46

Denis Rykov писал(а):
31 авг 2017, 02:55
Denis Rykov » Сегодня, 03:55
Запустите работающий пример, откройте консоль браузера, посмотрите какие запросы уходят к MapCache, так будет понятно какой URL использовать.
Спасибо.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость