Что можно и нужно кэшировать в php проекте?

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

Кэшировать запросы в бд? Кэшировать готовые страницы? И самое главное какие алгоритмы использовать для выявления актуальности кэша?
  • Вопрос задан
  • 2541 просмотр
Пригласить эксперта
Ответы на вопрос 4
benbor
@benbor
Помог ответ - не забудь лайкнуть
Прежде чем тыкать пальцем в небо, и бездумно что-то оптимизировать, найдите это место. XHPROF вам в помощь. Вы точно будете знать, что у Вас сейчас медленно, и исправили ли вы это
Ответ написан
Комментировать
@hedint
Web разработчик
Сильно зависит от специфики каждого конкретного объекта и каждой отдельной страницы.
Руководствоваться стоит здравым смыслом.
Самое распространение "выявление актуальности кэша" - это окончание определенного периода времени, после чего кэш считается "протухшим".

Само кэширование тоже бывает разным - можно просто сохранять результаты запросов в memcache (или еще куда) на определенное время, а можно через nginx отдавать из кэша целые страницы.
Ответ написан
Комментировать
Где данные редко меняются - кэшируйте страницы или блоки, из которых страницы формируются. Если часто меняются, тогда оптимизируйте базу данных, может, у вас не оптимальные выборки. Если читателей слишком много, тогда можно заранее готовить результаты выборки, чтобы не во время посещения сайта в базе искались данные, а в момент их добавления (или периодически) для каждого юзера/группы юзеров готовились результаты.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Основное кэширование:
dbQ - запрос в БД
dbR - результат из БД

if (Cache->isCached(dbQ.dbR)) $page=Cache->getPage();
else {
///rendering page $page
....................
Cache->setPage($page);
Cache->toCache(dbQ.dbR);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы