Использование нескольких доменов для быстрой загрузки листов в Leaflet js (не поддоменах) - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь ускорить загрузку тайлов моей пользовательской игровой карты: www.nwnevilparty.com, у меня просто случается, что другой домен ничего не делает www.evilpartynwn.com, который я хотел бы использовать для помощи в загрузке тайлов. В настоящее время мой хост не допускает субдоменов, поэтому я остаюсь с этим.

Вот где я исследую: https://leafletjs.com/reference-1.6.0.html#tilelayer


Что я попробовал:

// Original line
main = L.tileLayer('maps/barovia/{z}/{x}/{y}.png', {noWrap: true, bounds: new L.LatLngBounds(southWest, northEast),}).addTo(map);

// Modified line -- Why only nwnevilparty.com gets used for tiles?
main = L.tileLayer('http://{server}/maps/barovia/{z}/{x}/{y}.png', {server: 'nwnevilparty.com' || 'evilpartynwn.com'}, {noWrap: true, bounds: new L.LatLngBounds(southWest, northEast),}).addTo(map);

Что я делаю не так и почему мой пример не работает?

1 Ответ

3 голосов
/ 23 апреля 2020

В JavaScript оператор || возвращает левый операнд, если он равен truey , в противном случае - правый. Кроме того, он выполняется там, где указано.

В вашем случае: 'nwnevilparty.com' || 'evilpartynwn.com' левая непустая строка является истинной, следовательно, она всегда является результатом операции.

Кроме того, в листе листовок Шаблон URL слоя, только заполнитель s имеет особое значение для обхода браузером ограничения одновременных запросов на домен. Поскольку в вашем случае вы используете server, Leaflet не пробует с ним ничего особенного, за исключением замены на вашу постоянную строку.

Согласно do c для заполнителя s: (выделение мое )

{s} означает один из доступных поддоменов (используется последовательно, чтобы помочь с параллельными запросами браузера на ограничение домена; поддомен значения указаны в параметрах [...])

И опция subdomains:

Субдомены службы плиток. Может быть передан в виде одной строки (где каждая буква является именем субдомена) или массива строк.

Поэтому вы должны использовать:

L.tileLayer('http://{s}/maps/barovia/{z}/{x}/{y}.png', {
  subdomains: ['nwnevilparty.com', 'evilpartynwn.com'], // also note that it should not be on a separate options object
  noWrap: true,
  bounds: new L.LatLngBounds(southWest, northEast)
}).addTo(map);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...