Поиск по XML или поиск по БД / вычисление javascript (на стороне клиента) или php (на стороне сервера) - PullRequest
0 голосов
/ 27 сентября 2011

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 27 сентября 2011

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

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

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

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

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

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

...