教你利用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 相关文章推荐
解决Nginx 配置 proxy_pass 后 返回404问题
Mar 31 Servers
Nginx URL重写rewrite机制原理及使用实例
Apr 01 Servers
Nginx+Tomcat负载均衡集群的实现示例
Oct 24 Servers
详解nginx location指令
Jan 18 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
Nginx HTTP跳转至HTTPS
May 15 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
Jun 28 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 Servers
ubuntu开机后ROS程序自启动问题
Dec 24 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
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
tab栏切换原理
2017/03/22 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
python self,cls,decorator的理解
2009/07/13 Python
Python lambda和Python def区别分析
2014/11/30 Python
Python压缩和解压缩zip文件
2015/02/14 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python3 反射的四种基本方法解析
2019/08/26 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
学生出入校管理制度
2014/01/16 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
公司贷款承诺书
2014/05/30 职场文书
学校清明节活动总结
2014/07/04 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
接待员岗位职责
2015/02/13 职场文书
公司禁烟通知
2015/04/23 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android