Фильтрация на сервере или на клиенте? - PullRequest
0 голосов
/ 24 марта 2010

Я думаю о том, как создать рекламный сайт, который работает как твиттер.

Это означает, что большинство пользователей не посещают сайт через браузер, им следует запускать специальное клиентское приложение на своем ПК или смартфоне. Затем они установили несколько фильтров о том, какая реклама им нравится. И когда появится новое сообщение, отвечающее их потребностям, клиент отправит уведомление.
Чтобы сделать этого клиента максимально возможным в реальном времени, он должен опросить сервер за короткий промежуток времени.

Проблема в том, должен ли я выполнять фильтрацию на стороне сервера при опросе клиента, или я просто должен передать все новые сообщения клиенту и позволить клиенту выполнить фильтрацию?

Выполнение фильтрации на стороне сервера может привести к слишком большой загрузке ЦП сервера, но передача каждого сообщения вслепую клиенту может привести к потере значительной полосы пропускания.

Просто игра в мозг. :)

Ответы [ 5 ]

1 голос
/ 24 марта 2010

Если под фильтрацией вы имеете в виду запрос SQL, то, конечно, лучше будет выполнить его на сервере. Запрос из любой базы данных SQL очень легкий, даже если вы делаете тысячи SELECT.

1 голос
/ 24 марта 2010

Фильтрация данных на стороне сервера. Применение простого фильтрационного запроса (SELECT * FROM tweets WHERE category IN (1,2,3,4,5,)) не будет стоить вам слишком дорого - намного меньше, чем распространение всех доступных данных для всех клиентов.

0 голосов
/ 24 марта 2010

Как уже отмечали другие, нет смысла отправлять данные, которые не будут использоваться. Люди хотят только загрузить то, что они могут использовать. Если кто-то платит за мобильную рассылку данных, а ваше приложение показывает им 2 объявления и использует до 1000 объявлений данных, они прекратят использовать ваш сервис.

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

Суть в том, низкая скорость передачи данных, более быстрые ответы, более счастливый пользователь: -)

0 голосов
/ 24 марта 2010

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

0 голосов
/ 24 марта 2010

О, особенно если вы планируете развертывать на мобильных устройствах, / всегда / фильтр на стороне сервера. Возможно, основная проблема заключается в поиске подходящих структур данных для связи новых сообщений с фильтрами, чтобы это не было дорогостоящим. И вы также можете хранить наиболее востребованные записи и фильтры в memcached, чтобы вы не всегда обращались к базе данных.

Абсолютно бессмысленно передавать весь материал клиенту, а затем не показывать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...