教你利用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 相关文章推荐
详解Apache SkyWalking 告警配置指南
Apr 22 Servers
Nginx location 和 proxy_pass路径配置问题小结
Sep 04 Servers
Nginx进程调度问题详解
Sep 25 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
Nginx配置根据url参数重定向
Apr 11 Servers
nginx搭建NFS网络文件系统
Apr 14 Servers
centos7安装mysql5.7经验记录
May 02 Servers
使用Nginx的访问日志统计PV与UV
May 06 Servers
Nginx 匹配方式
May 15 Servers
Nginx开源可视化配置工具NginxConfig使用教程
Jun 21 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
Jun 28 Servers
Shell中的单中括号和双中括号的用法详解
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
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python 切分数组实例解析
2019/11/07 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
保密承诺书范文
2014/03/27 职场文书
食品采购员岗位职责
2014/04/14 职场文书
电子商务专业自荐信
2014/06/02 职场文书
学习十八大演讲稿
2014/09/15 职场文书
2014年党员整改措施
2014/10/24 职场文书
个人创业事迹材料
2014/12/30 职场文书
承诺书模板大全
2015/05/04 职场文书
单位政审意见范文
2015/06/04 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript