教你利用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优化服务之网页压缩的实现方法
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
Nginx配置文件详解以及优化建议指南
Sep 15 Servers
Nginx进程调度问题详解
Sep 25 Servers
详解nginx location指令
Jan 18 Servers
阿里云ECS云服务器快照的概念以及如何使用
Apr 21 Servers
Windows Server 2016 配置 IIS 的详细步骤
Apr 28 Servers
Nginx 匹配方式
May 15 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
netty 实现tomcat的示例代码
Jun 05 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 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
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
php格式文件打开的四种方法
2018/02/24 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
javascript实现异形滚动轮播
2019/11/28 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Python3爬楼梯算法示例
2019/03/04 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
英国综合网上购物商城:The Hut
2018/07/03 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
自我鉴定思想方面
2013/10/07 职场文书
建筑项目策划书
2014/01/13 职场文书
高中家长寄语
2014/04/02 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
表扬通报怎么写
2015/01/16 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技