Здравствуйте. Имеется следующая ситуация. Есть инфоблок местоположения, где разделы - это страны(верхний уровень) и регионы(дочерние). На последнем уровне в разделах содержаться элементы - населенные пункты. Такую структуру потребовал заказчик, чтобы можно легко было смотреть вложенность и добавлять переводы названий для нескольких языков. Сам бы попробовал сделать на хайлоадах.
Есть инфоблок партнеров. Каждый партнер - элемент. В нем есть привязка к населенному пункту.
У нас есть гугл-карта, на которых должны отображаться контуры регионов и маркеры партнеров. Контуры кликабельны. Т.е. кликнув на контур страны, попадаешь уровнем ниже, где есть контуры областей. Как это выглядит, см. скриншот к посту. Работает все это дело на аякс-запросах.
Проблема в следующем. На уровне, например Франции мне нужно показать всех партнеров. Для этого нужно найти всех партнеров, которые привязаны к населенным пунктам Франции. Населенных пунктов тысячи. Получается приблизительно такая последовательность действий
1. Найти все населенные пункты Франции
2. Найти всех партнеров, которые привязаны к этим населенным пунктам(тысячи их) и соответствуют фильтру(об этом чуть ниже)
Это порождает гигантские запросы. Можно конечно закешировать эти данные, но у нас на карте еще есть фильтр, например по языкам, на которых говорит партнер. В итоге мы получаем множество комбинаций. Т.е. например человек зашел на уровень Франции и ищет партнеров на русском и английском. Это один кеш, второй просто на русском - второй кеш, третий на английском и французском - третий кеш.
Прошу следующие советы:
1. Как можно оптимизировать данные запросы? Логичным шагом будет создание избыточных данных. Например, еще хранить привязку к стране. Тогда на уровне страны запросы можно сэкономить. Но на уровне ниже населенных пунктов все равно больше тысячи. Вложенность в разных странах разная. Поэтому создавать поля типа суб-регион, суб-суб-регион наверное очень плохой вариант.
2. Какое время кеширования выставить? Кеш будет зависеть от региона+множественные параметры фильтра(параметров 3-4), в каждом параметре до 10 значений. Т.е. cache_id получается типа REGION_234556_LANGUAGE_1_3_5_PARAM3_4_7. Не требуется мгновенное обновление данных. Т.е. добавленный партнер может появится спустя 3-4 часа.
Буду благодарен за любые советы
Есть инфоблок партнеров. Каждый партнер - элемент. В нем есть привязка к населенному пункту.
У нас есть гугл-карта, на которых должны отображаться контуры регионов и маркеры партнеров. Контуры кликабельны. Т.е. кликнув на контур страны, попадаешь уровнем ниже, где есть контуры областей. Как это выглядит, см. скриншот к посту. Работает все это дело на аякс-запросах.
Проблема в следующем. На уровне, например Франции мне нужно показать всех партнеров. Для этого нужно найти всех партнеров, которые привязаны к населенным пунктам Франции. Населенных пунктов тысячи. Получается приблизительно такая последовательность действий
1. Найти все населенные пункты Франции
2. Найти всех партнеров, которые привязаны к этим населенным пунктам(тысячи их) и соответствуют фильтру(об этом чуть ниже)
Это порождает гигантские запросы. Можно конечно закешировать эти данные, но у нас на карте еще есть фильтр, например по языкам, на которых говорит партнер. В итоге мы получаем множество комбинаций. Т.е. например человек зашел на уровень Франции и ищет партнеров на русском и английском. Это один кеш, второй просто на русском - второй кеш, третий на английском и французском - третий кеш.
Прошу следующие советы:
1. Как можно оптимизировать данные запросы? Логичным шагом будет создание избыточных данных. Например, еще хранить привязку к стране. Тогда на уровне страны запросы можно сэкономить. Но на уровне ниже населенных пунктов все равно больше тысячи. Вложенность в разных странах разная. Поэтому создавать поля типа суб-регион, суб-суб-регион наверное очень плохой вариант.
2. Какое время кеширования выставить? Кеш будет зависеть от региона+множественные параметры фильтра(параметров 3-4), в каждом параметре до 10 значений. Т.е. cache_id получается типа REGION_234556_LANGUAGE_1_3_5_PARAM3_4_7. Не требуется мгновенное обновление данных. Т.е. добавленный партнер может появится спустя 3-4 часа.
Буду благодарен за любые советы