- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день.
Подскажите, пожалуйста, как грамотно поступить. Не совсем понимаю.
На странице есть список новостей, который берется из БД. Каждую новость можно комментировать и ставить на неё лайки, дизлайки.
Как правильно это все кэшировать?
Была идея кэшировать вообще всю страницу с новостями, и обновлять кэш раз в несколько минут. Но как быть с лайками и комментариями?
В принципе не обязательно показывать актуальные данные по лайку и комментам, но проблема в том, что посетитель ставит лайк, и если страница берется из кеша, этот лайк уберется после обновления страницы...
Если обновлять кеш только при лайке/комменте, то тоже не вариант, т.к. лайков много и получается кэш может держаться буквально несколько секунд, я думаю в таком случае смысла кеша вообще нет.
Используйте блочное кеширование - кеширование отдельных элементов страницы (текст, заголовок новости и т.п.).
Храните лайки в мемкеше отдельным ключем...
Как вариант выводить голоса с помощью ajax. У меня так работает на полностью статичном wordpress сайте.
При нажатии на +1 для пользователя выводится очень хорошо видимый значок "+1", становится понятным, что голос учтён. При этом в БД значение увеличивается на +1. При перезагрузке счётчик будет уже на 1 больше.
Смотрел разные системы, как можно реализовать динамические элементы. Это оказался самым простым - т.к. я не программист и делать нужно было всё самому.
При комменте вполне можно сразу сбрасывать и обновлять кэш.
Давайте начнем с посещаемости и количество лайков в секунду.
Может и не надо ничего кешировать?
На данный момент пиковый онлайн около 200 человек.
Т.е. даже если брать по максимум то около 50 запросов в секунду на лайк/коммент/загрузку контента.
Получается достаточно много запросов.
Сперва идет выборка 10 новостей.
Потом идет по каждой новости выборка комментов + запрос в БД на проверку, ставили ли мы лайк/дизлайк/репост (3 запроса) на эту запись.
Получается за 1 загрузку страницы 22 запроса к базе данных. (42 запроса только на блок новости).
Но там ещё кучу запросов на другие блоки в этой странице. Получается около 100 запросов в том числе и update.
Конечно не очень много, но когда 200 человек онлай, пик получается около 3000-5000 запросов в секунду к БД.
Может и не много. Но посещаемость растет, и через полгода будет около 1000 пиковый онлайн, через год несколько тысяч. (сейчас сайту ещё месяца нет).
Может пока нагрузки не большие, но хочется сделать с большим запасом + чтобы один и тот же сервер выдерживал как можно больше онлайн.
revered, надо анализировать поведение пользователей на сайте. может имеет смысл в новости хранить кэш лайков, может проще у пользователя статьи с лайками.
не считать каждый раз кол-во лайков у новости, а закэшировать и обновлять при изменении и тд и тп
revered, как выше предложили, я также считаю, что в вашем случае хорошим решением будет - голосование через аджакс. Это будет универсальным независимым от движка и кеширования решением. Тем более для поисковиков эта второстепенная информация не нужна, а пользователям даже удобней будет - голос будет учитываться без перезагрузки страницы.
Да, так и работает.
Голосы и комментарии через AJAX добавляются.
Но проблема в том, что если закэшировать блок целеком, то когда он поставить лайк и обновит страницу (F5), то будет ему показано, что лайк не поставлен, т.к. ещё старая версия блока покажется.
Получается единственный выход убирать кэш каждый раз, как ставят лайк/коммент?
Получается единственный выход убирать кэш каждый раз, как ставят лайк/коммент?
а как иначе?
на всякий случай: не обновлять ВЕСь кэш, а только для конкретной новости, но это вроде и так понятно
Полностью менять архитектуру БД и запросов. Извините, но это глупость на 1 загрузку 22 запроса.
---------- Добавлено 15.04.2016 в 15:44 ----------
Это отдельные таблицы что-ли?!