Направляйте пользователей на веб-страницу в зависимости от их города. - PullRequest
3 голосов
/ 20 сентября 2010

Hii,

Мы хотим перенаправить наших пользователей на одну из наших веб-страниц, соответствующую городу пользователей (местоположение основано на IP-адресе пользователей и с использованием некоторых баз данных IP-адресов)

Мой вопрос: как заставить его работать быстро? например, в веб-сайте gropoun, когда пользователь посещает, он мгновенно переносит пользователя на страницу своего города.

Спасибо.

Редактировать: Мы используем PHP

Ответы [ 4 ]

2 голосов
/ 20 сентября 2010

Вы хотите сделать это на стороне сервера или клиента?Если на стороне клиента (то есть, используя javascript), вы можете использовать один из многих сервисов геоипа.В частности, Yahoo! YGL

Кроме того, вы можете сделать это на стороне сервера, используя довольномного и языка или рамок.Вы можете совершать вызовы API или сервисы сторонним поставщикам геоипов или загружать данные в свою базу данных и самостоятельно искать.

Вам также необходимо будет указать регион или почтовый индекс по умолчанию, поскольку каждый IP-адрес не может быть определен.Например, одно веб-приложение, над которым я сейчас работаю, имеет 95% аудитории в США, поэтому мы используем географический центр страны, равный 66952.

1 голос
/ 20 сентября 2010

Я сделал это для нескольких клиентов на стороне сервера, используя службу поиска <a href="http://ipinfodb.com/ip_location_api.php" rel="nofollow noreferrer">http://ipinfodb.com/ip_location_api.php</a>.

Просто не забудьте сохранить IP-адреса и адреса в базе данных, чтобы не выполнять избыточный поиск.Я использовал данные часового пояса, чтобы определить регион посетителя.

1 голос
/ 20 сентября 2010

Кеш, кеш, кеш все. Кэшируйте результаты поиска в вашей таблице IP, кэшируйте результаты для отдельных пользователей в их сеансе или файлах cookie, кэшируйте отображаемую часть информации о локализации ваших страниц (или, по крайней мере, части с интенсивным запросом).

Можно дать больше подробностей, но все зависит от ваших узких мест. (В конце концов, нет смысла реализовывать сложное кэширование на стороне маршрутизации, если узким местом является рендеринг локализованной информации, потому что вызовам вашей БД для выполнения требуется почти полсекунды). Я не могу сказать вам, где находятся / будут узкие места в вашем приложении. Сначала вам нужно будет его профилировать, а затем оптимизировать на основе того, что вам скажет профилировщик.

1 голос
/ 20 сентября 2010

Вы должны определить ip пользователя из httpRequest, а затем использовать какую-то базу данных, например geoip

...