Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Поиск XML или поиск в БД/расчет javascript (на стороне клиента) или php (на стороне сервера)

Автор вопроса: Red SciОтветов: 1

Допустим, ваш сайт посещают 200 000 уникальных пользователей в день. Итак, ваш сервер сильно загружен/забит; и у вас НЕТ ресурсов для покупки большего/лучшего сервера. Итак, вы застряли с тем, что у вас есть.

Теперь, всякий раз, когда пользователь заходит на ваш сайт, вам нужно выполнить некоторые вычисления (рассчитать расстояние между городом пользователя, обнаруженным через GeoIP, и некоторым белым списком городов, определить ближайший город в радиусе 140 миль).

Вы бы сделали этот расчет через PHP или через JavaScript?

Во-первых, не могли бы вы предварительно рассчитать все близлежащие города в радиусе 140 миль от городов, внесенных в белый список? Например: Город 1 из белого списка может иметь 20 близлежащих городов. Или вы будете каждый раз делать расчеты на лету?

Например: Белый список = Детройт, Мичиган и соседний город = Каламазу, Мичиган (140 миль)

Во-вторых, если предварительно вычислить: вы бы сохранили это в файле XML или в какой-нибудь таблице MySQL? Теперь нам осталось только поискать по таблице (mysql или xml размером не более 1 мб). Я предполагаю, что это было бы неэффективно, потому что браузеру клиента (JavaScript) пришлось бы загружать 1 МБ xml и выполнять поиск по нему. Это сделало бы время загрузки страницы еще медленнее. Использование БД может быть быстрее, но тогда увеличивается нагрузка на БД (если 200 000 уникальных пользователей пытаются загрузить страницу в течение дня).

Возможно, лучшим способом было бы выполнить предварительное вычисление, сохранить предварительно вычисленные результаты в XML, а затем использовать PHP для поиска в XML и поиска ближайшего город из белого списка для пользователя?

javascriptxmlphpperformancexml-parsing

Ответы

Ответ 1 · Jeff Warnica

Если вы, сайт, на самом деле полагаетесь на информацию о городе, то вы должны сделать расчет на сервере.

Запросы к базе данных почти всегда будут быстрее, чем поиск XML для достаточно больших XML-файлов. Вы можете оптимизировать запрос, MySQL будет кэшировать вещи и т. д.

Предварительный расчет всех расстояний между городами, безусловно, был бы правильным. GeoIP предоставляет не только названия городов, но и фактическую широту/долготу местоположения. Я уверен, что возможный список городов тоже довольно постоянно меняется.

Я хотел бы изучить использование геопространственных возможностей MySQL. Общий вид поиска по координатам здесь:

Самый быстрый способ найти расстояние между двумя точками широты/долготы

Короче говоря, вы настроите базу данных интересующих вас городов с их широтой/долготой и запросите эту таблицу на основе предоставляемой GeoIP широты/долготы.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы