教你利用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 相关文章推荐
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
Mar 09 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Nginx访问日志及错误日志参数说明
Mar 31 Servers
nginx简单配置多个server的方法
Mar 31 Servers
Nginx+Windows搭建域名访问环境的操作方法
Mar 17 Servers
Minikube搭建Kubernetes集群
Mar 31 Servers
tomcat正常启动但网页却无法访问的几种解决方法
May 06 Servers
nginx实现多geoserver服务的负载均衡
May 15 Servers
服务器间如何实现文件共享
May 20 Servers
apache ftpserver搭建ftp服务器
May 20 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 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
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
php命令行写shell实例详解
2018/07/19 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
用python代码做configure文件
2014/07/20 Python
web.py在模板中输出美元符号的方法
2014/08/26 Python
用Python创建声明性迷你语言的教程
2015/04/13 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
python多线程使用方法实例详解
2019/12/30 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
幼师专业求职推荐信
2013/11/08 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
中标通知书
2015/04/17 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android