#php #mysql #caching #social-networking
#php #mysql #кэширование #социальная сеть
Вопрос:
У меня есть сайт социальной сети, написанный на PHP и использующий базу данных MySQL. В настоящее время я показываю предварительный просмотр пользователей онлайн на главной странице для людей, которые не вошли в систему. Это можно легко кэшировать, поскольку результаты одинаковы для всех.
Моя проблема в том, что зарегистрированные пользователи могут блокировать друг друга и доставлять пользовательские результаты поиска, что очень затрудняет кэширование (я использую APC для других легко кэшируемых вещей.) Я думал о кэшировании одного общего набора результатов (например, мужчины ищут женщин), а затем о сохранении списка заблокированных пользователей в памяти и удалении нежелательных участников из поиска — но это затрудняет вычисление разбивки на страницы и кажется неэффективным.
Вначале это не было проблемой, но теперь, когда более 100 тысяч участников и несколько очень активных пользователей, это становится большой проблемой!
Я чувствую, что есть более эффективный способ сделать это, и я ищу идеи: D
Комментарии:
1. Звучит больше как сайт типа «знакомства» или «горячие синглы ждут вас!», чем «социальная сеть».
2. отношения пользователей очень часто не являются взаимно однозначными.. итак, это своего рода социальная сеть: D
Ответ №1:
Вы можете заменить ник «заблокированного» пользователя некоторым заполнителем («заблокированный» или «нежелательный»), когда зарегистрированный пользователь просматривает список.
Смотрите, как SO делает то же самое с «Игнорируемыми тегами» (на главной странице) — вопросы с игнорируемыми тегами просто исчезают.
Это позволит вам избежать проблем с разбиением на страницы.