教你利用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 多个location转发任意请求或访问静态资源文件的实现
Mar 31 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
nginx结合openssl实现https的方法
Jul 25 Servers
centos8安装nginx1.9.1的详细过程
Aug 02 Servers
Apache Pulsar集群搭建部署详细过程
Feb 12 Servers
nginx中封禁ip和允许内网ip访问的实现示例
Mar 17 Servers
HDFS免重启挂载新磁盘
Apr 06 Servers
Nginx的gzip相关介绍
May 11 Servers
apache ftpserver搭建ftp服务器
May 20 Servers
安装harbor作为docker镜像仓库的问题
Jun 14 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
Jun 21 Servers
GPU服务器的多用户配置方法
Jul 07 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获取金书网的书名的实现代码
2010/06/11 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python3中int(整型)的使用教程
2017/03/23 Python
Python虚拟环境项目实例
2017/11/20 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL
搭建Yolov5服务器
2022/04/30 Servers