Потерял смысл кеширования. Как кешировать данные для разных пользователей?
Всем привет! Подскажите как решить такую проблему...
Решил кешировать данные для ленты новостей... Но тут проблема... в каждой новости можно поставить лайк, а значит для того чтобы подсветить пользователю другим цветом те новости, к которым он лайк поставил - нужно получать данные о лайках в запросе к БД вместе с данными о новостях....
Получается, если закешировать на выходе полученный список новостей - следующий пользователь будет видть не свои лайки, а чужие...
Выходит что в такой ситуации кеш бессмысленнен, или есть способы обойти эту проблему?
user_of_toster, не решил, так и использую без кеширования. Можно было бы кешировать только результат запросов из БД а потом дополнительно делать запрос за лайками и подставлять к кешированным данным. Но профита мало. Как вариант можно было бы уже на стороне клиента (браузера, приложения) сделать дополнительный запрос к серверу для получения данных о лайках и прямо в браузере перерисовывать лайкнутые посты, но это уже кеширование ради кеширование. так что нет. Оставил как есть, максимально оптимизировав запросы
user_of_toster, да, тут главное не забыть про возможную сортировку, если она есть "по дате, по рейтингу, по комментам и т.д." то придется кешировать гораздо больший объем. К тому же, нужно быть уверенным, что в выборке не появился пост, который был создан вне диапазона кеширования, потому что посты имеют свойства набирать популярность не зависимо от времени его создания (опять же это про сортировку). К тому же, посты есть не только в ленте, например ситуация: на yaplakal кто-то закинул ссылку на мой профиль где сотни старых постов. Моментально туда набежит куча юзеров, а мы бац и не кешируем лайки старых постов. Итог - придется все равно брать их из базы и к тому же делать проверку о данных в кеше. В общем весь этот геморой перевесил желание сделать кеширование. Пока база справляется и с JOIN-ами на лету...
Кстати именно из-за этой задачи я понял фразы, которые постоянно читал: "не решай не существующие проблемы. Когда будет необходимость в оптимизации, тогда и нужно оптимизировать"