教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

一、背景

最近有小伙伴遇到了大数据量地图加载慢的情况,观察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}占位符

代码如下:

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方式对接

代码如下:

 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数组

代码如下:

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参数

代码如下:

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 服务内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nginx开启Gzip压缩大幅提高页面加载速度的方法

    刚刚给博客加了一个500px相册插件,lightbox引入了很多js文件和css文件,页面一下子看起来非常臃肿,所以还是把Gzip打开了. 环境:Debian 6 1.Vim打开Nginx配置文件 vim /usr/local/nginx/conf/nginx.conf 2.找到如下一段,进行修改 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; #gzip_http_version 1.0; gzip_comp_level 2; gzip_typ

  • Nginx 服务器重启关闭重新加载命令

    nginx -s reload  :修改配置后重新加载生效 nginx -s reopen  :重新打开日志文件 nginx -t  测试nginx配置文件是否正确 检查正确性时,出现: nginx: the configuration file /home/kratos/local/nginx/conf/nginx.conf syntax is ok nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied) nginx

  • 教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

    一.背景 最近有小伙伴遇到了大数据量地图加载慢的情况,观察iServer性能并未发挥到极致,所以通过搭建子域的方式成功实现了浏览速度的提升. 子域能对加载速度进行提升是因为浏览器对同一个域名服务的并发请求数量有限制,通过 Nginx 服务部署多个子域名,加大向 iServer 发送数据请求的并发量,从而达到提升加载速度的目的. 二.Nginx配置步骤 1.修改Nginx 配置nginx.conf,监控多个端口 server { listen 8881; listen 8882; listen 8

  • 教你用Python+selenium搭建自动化测试环境

    一.环境搭建 1.安装python+pycharm软件 .python安装网址官网:https://www.python.org/about/ 根据自己的电脑系统选择最新版本 下载到本地,选择安装路径并配置好环境变量 验证安装是否成功 搜索中录入cmd 打开命令窗口 录入python显示一下版本号表示安装成功 2.pycharm软件安装地址:https://www.jetbrains.com/pycharm/download/#section=windows 根据自己的需求选择专业版或者社区版

  • 群晖NAS利用Docker容器搭建KMS激活服务器实现激活windows系统和office(操作步骤)

    前言 Windows系统中能够通过KMS进行激活的一般称为VL版,即VOLUME授权版.我们可以自行搭建KMS激活服务器,实现每180天一次的自动激活,使得系统一直保持激活状态.这次就跟大家分享一下如何利用群晖NAS的Docker容器套件搭建KMS服务器,并演示如何利用我们自己的KMS服务器激活Windows操作系统与Microsoft Office. 操作步骤 先到套件中心安装Docker套件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZCVBfkb9-15

  • 利用Nginx处理Vue开发环境的跨域的方法

    1. 需求 本地测试域名与线上域名相同,以便正确传递 Cookie 和进行 SSO 测试. 注:由于 SSO 登录后,相关 Cookie 被加在四级域名上,因而需要做到本地测试域名和线上接口域名相同. 2. 方案 配置 Host 文件使线上域名指向 Localhost: 127.0.0.1 product.xxx.xxx.com 配置 Nginx 进行对应转发: server { listen 80; listen [::]:80; server_name ${product.xxx.xxx.c

  • 利用jquery.qrcode在页面上生成二维码且支持中文

    实例如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>    <title>使用j

  • 教你如何使用google.zxing结合springboot生成二维码功能

    目录 Zxing原生方式 添加依赖 二维码生成工具类 添加Controller 添加测试页面 Hutool的方式 添加依赖 创建QRCodeService 添加Controller 效果测试 我们使用两种方式,去生成二维码,但是其实,二维码的生成基础,都是zxing包,这是Google开源的一个包,第一种是使用原始的zxing方式去实现,第二种是使用hutool来实现,hutool其实也是对于zxing的一个封装,但是封装前后,确实比较简单了. Zxing原生方式 添加依赖 <!-- zxing

  • Ubuntu下搭建与配置Nginx服务

    目录 一.Nginx nginx应用场合 二.nginx服务搭建 1.使用apt安装 2.安装后的位置: 3.启动并验证效果 4.查看版本号: 三.nginx配置文件介绍 1.nginx 文件结构 2.默认的配置 3.nginx的基本配置 四. nginx虚拟主机配置 验证配置文件: 五.nginx全局变量 六.Nginx主要配置 1.静态Http服务器配置 2.反向代理服务器配置 3.负载均衡配置 4.虚拟主机配置 一.Nginx Nginx("engine x")是一款是由俄罗斯的

  • React Native 搭建开发环境的方法步骤

    本文介绍了React Native 搭建开发环境,分享给大家,具体如下: 准备工作 node -v:确认是否安装Node,若已经成功安装了,则执行下面的命令:否则先进行Node的安装. npm install -g create-react-native-app:使用npm快速创建React Native应用. create-react-native-app AwesomeProject:创建名为AwesomeProject的项目. cd AwesomeProject:进入项目所在文件目录. y

  • 基于Jenkins+Maven+Gitea+Nexus搭建CICD环境的方式

    目录 普通Jar包的运行方式 搭建Nexus私服环境 下载和安装 安装Maven 登录控制台 Nexus控制台说明 目录说明 Nexus设置成系统服务 搭建Gitea环境 搭建Jenkins环境 项目改造 项目配置本地的私服 修改发布服务器的settings.xml文件 配置自动集成与发布 配置Jenkins的环境变量 安装Jenkins插件 配置发布目标服务器信息 添加项目发布机制 编写发布脚本 编写运行脚本run-goods-service.sh 配置代码提交后动态构建 安装Webhook插

  • 利用nginx搭建RTMP视频点播、直播、HLS服务器

    目录 nginx的服务器的搭建 点播视频服务器的配置 直播视频服务器的配置 配置OBS如图: 实时回看视频服务器的配置 开发环境 Ubuntu 14.04 server nginx-1.8.1 nginx-rtmp-module nginx的服务器的搭建 安装nginx的依赖库 sudo apt-get update sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install openssl libssl-dev 配置并编译ng

随机推荐