教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤


Posted in Servers onSeptember 25, 2021

一、背景

最近有小伙伴遇到了大数据量地图加载慢的情况,观察iServer性能并未发挥到极致,所以通过搭建子域的方式成功实现了浏览速度的提升。
子域能对加载速度进行提升是因为浏览器对同一个域名服务的并发请求数量有限制,通过 Nginx 服务部署多个子域名,加大向 iServer 发送数据请求的并发量,从而达到提升加载速度的目的。

二、Nginx配置步骤

1.修改Nginx 配置nginx.conf,监控多个端口

server {
		listen       8881;
		listen       8882;
		listen       8883;
		listen       8884;
		listen       8885;
        server_name  127.0.0.1,172.16.15.124;
        location / {
            root   html;
            index  index.html index.htm;
        }

		location /iserver {
            proxy_pass   http://172.16.15.124:8090;
            proxy_redirect off;
			proxy_buffering off;
			proxy_set_header Host $host:$server_port;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

三、前端对接

1.Leaflet使用subdomains参数,url中加入{s}占位符

教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

代码如下:

var map= "";
    map = L.map('map', {
        crs: L.CRS.EPSG4326,
        center: [0, 0],
        maxZoom: 18,
        zoom: 1
    });
    L.supermap.tiledMapLayer("http://127.0.0.1:{s}/iserver/services/map-world/rest/maps/World",{subdomains:[8881,8882,8883,8884]}).addTo(map);

2.OpenLayer通过设置url参数{?-?},并通过XYZ方式对接

教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

代码如下:

var map, url = "http://127.0.0.1:888{1-4}/iserver/services/map-world/rest/maps/World/zxyTileImage.png?z={z}&x={x}&y={y}";
    map = new ol.Map({
        target: 'map',
        controls: ol.control.defaults({attributionOptions: {collapsed: false}})
            .extend([new ol.supermap.control.Logo()]),
        view: new ol.View({
            center: [0, 0],
            zoom: 2,
            projection: 'EPSG:3857',
            multiWorld: true
        })
    });
    var layer = new ol.layer.Tile({
        source: new ol.source.XYZ({
            url: url,
            wrapX: true
        }),
        projection: 'EPSG:3857'
    });
    map.addLayer(layer);
    map.addControl(new ol.supermap.control.ScaleLine());

3.Classic直接传递url数组

教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

代码如下:

var map, layer,
        host = window.isLocal ? window.server : "https://iserver.supermap.io",
        url = host + "/iserver/services/map-world/rest/maps/World";
    //初始化地图
    map = new SuperMap.Map("map", {
        controls: [
            new SuperMap.Control.Navigation(),
            new SuperMap.Control.Zoom()]
    });
    map.addControl(new SuperMap.Control.MousePosition());
    //初始化图层
    layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", ["http://127.0.0.1:8881/iserver/services/map-world/rest/maps/World","http://127.0.0.1:8882/iserver/services/map-world/rest/maps/World","http://127.0.0.1:8883/iserver/services/map-world/rest/maps/World"], null, {maxResolution: "auto"});
    //监听图层信息加载完成事件
    layer.events.on({"layerInitialized": addLayer});
    function addLayer() {
        map.addLayer(layer);
        //显示地图范围
        map.setCenter(new SuperMap.LonLat(0, 0), 0);

4.MapboxGL直接传递tiles参数

教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

代码如下:

var host = window.isLocal ? window.server : 'https://iserver.supermap.io';
            var map = new mapboxgl.Map({
                container: 'map', // container id
                style: {
                    version: 8,
                    sources: {
                        'raster-tiles': {
                            type: 'raster',
                            tileSize: 256,
                            tiles: ["http://127.0.0.1:8881/iserver/services/map-world/rest/maps/World","http://127.0.0.1:8882/iserver/services/map-world/rest/maps/World","http://127.0.0.1:8883/iserver/services/map-world/rest/maps/World"],
                            rasterSource: 'iserver'
                        }
                    },

                    layers: [
                        {
                            id: 'simple-tiles',
                            type: 'raster',
                            source: 'raster-tiles',
                            minzoom: 0,
                            maxzoom: 22
                        }
                    ]
                },
                crs: 'EPSG:4326', // 或者 mapboxgl.CRS.EPSG4326  或者 new mapboxgl.CRS('EPSG:4326',[-180,-90,180,90]);
                center: [0, 0],
                zoom: 2
            });

到此这篇关于利用 Nginx 服务搭建子域环境提升二维地图加载性能的文章就介绍到这了,更多相关Nginx 服务内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
Nginx+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
nginx处理http请求实现过程解析
Mar 31 Servers
nginx location优先级的深入讲解
Mar 31 Servers
nginx+lua单机上万并发的实现
May 31 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Windows Server 2012配置DNS服务器的方法
Apr 29 Servers
apache ftpserver搭建ftp服务器
May 20 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
使用 DataAnt 监控 Apache APISIX的原理解析
Jul 07 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
Nginx进程调度问题详解
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 #Servers
关于nginx 实现jira反向代理的问题
Windows下用Nginx配置https服务器及反向代理的问题
Sep 25 #Servers
nginx安装以及配置的详细过程记录
Sep 15 #Servers
Nginx缓存设置案例详解
Sep 15 #Servers
图文详解Nginx版本平滑升级方案
Sep 15 #Servers
You might like
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
python根据出生日期返回年龄的方法
2015/03/26 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python 实现图片批量压缩的示例
2020/12/18 Python
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
英智兴达软件测试笔试题
2016/10/12 面试题
外贸业务员的岗位职责
2013/11/23 职场文书
七一党建活动方案
2014/01/28 职场文书
班主任工作经验材料
2014/02/02 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
SQL Server连接查询的实用教程
2021/04/07 SQL Server
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS
python热力图实现的完整实例
2022/06/25 Python