Зачем нужен кэш?

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Для флудеров: тема создана в разделе мегафлуд, где СЧЁТЧИК СООБЩЕНИЙ ВЫКЛЮЧЕН. Поэтому прошу Вас писать по теме или идти **х*й лесом.

И так, суть вопроса - зачем вообще нужен кэш в CMS? Нет, нет, теорию я знаю - он снимает нагрузку с сервера, это я знаю... Давайте переформулирую вопрос - когда нужен кэш?..

Давайте разберём самый известный кэш - это кэш браузера... Он позволяет экономить трафик и это действительно так. Он при любых условиях экономит трафик.

Есть примеры использования кэша в ОЗУ... Тоже понятно - запрос в оперативную память идёт быстрее, чем на HDD...

А вот зачем кэш нужен в CMS? Ведь HDD, т.е. файловая БД, работает медленнее, чем MySQL... Я могу предположить, что кэширование нужно очень тяжёлым и редко изменяемым запросам - к примеру статистики сайта... Её достаточно обновлять раз в сутки, а в кэше хранить готовый ответ MySQL... Но современные CMS кэшируют всё подряд... Есть ли в этом смысл?

И так, мне стало интересно - что же действительно нужно кэшировать? Нужно ли кэшировать только тяжёлые запросы или статическую информацию? Или кэш нужен только тогда, когда не справляется MySQ? Нужен ли кэш вообще, если MySQL не нагружен?

Дублировать ответы можно и даже нужно, ведь это опрос мнений... Но каждый ответ желательно аргументировать...

Флудить не обязательно =)
 
если файловое кеширование в CMS реализовано правильно то выигрыш очень большой по нагрузке,
но это ТОЛЬКО если есть большое количество просмотров одной и той же старницы

кэш в CMS средствами php это уже прошлое (из плюсов тут только гибкость)

кеширование динамики в статику средствами nginx или Varnish вот что сейчас лучше применять

в этом случае второй запрос не грузит не только mysql а и apache и php, те сайт отдаётсмя с той скоростью с какой бы отдавались простейшие статичные html странички
 
Можно в память кэшировать. Reddit вообще всё подряд кэширует (если вообще не всё).
Наиболее интересным пунктом архитектуры Reddit является «Урок 6 — сохраняйте избыточные данные». Основная идея очень проста — мы достигаем скорости, сделав предрасчет всего и закешировав его. Reddit использует предрасчет по максимуму. Складывается впечатление, что все что вы видите на Reddit, было вычислено заранее и закешировано, вне зависимости от того, сколько версий данных им приходится хранить. Например, они кешируют все 15 способов сортировки сообщений (горячие, новые, лучшие старые, эта недели и т.п.) для списка сообщений, как только кто-то добавит ссылку. Обычные разработчики побоятся делать настолько экстремальный кеш, считая его пустой тратой ресурсов. Но команда Reddit думает, что лучше потратить немного ресурсов, чем тормозить. Тратить дисковое пространство и память лучше, чем заставлять пользователей ждать. Так что, если вы стеснялись использовать предрасчет и кеширование по максимуму, у вас есть хороший прецедент.
Для просмотра ссылки Войди или Зарегистрируйся
 
o_nix, с 1000-ым постом тебя =)

Что Varnish ускоряет работу - не оспариваю.. Я с его помощью держал ДДоС, от которого в итоге умерла циска, за что ему огромное спасибо... При ДДоСе в 98 мбит/с (скорость канала) загрузка была 4% ЦП... Так что не обсуждаемо...

Речь о кэш в CMS средствами php... Есть ли смысл его делать и когда он нужен?

Сейчас столкнулся с сайтом, который ест 20% ЦП мускулом... Есть ли смысл его переписывать на кэширование, если я могу и дальше выделять ему ресурсы под MySQL?

chibit, тоже самое... Интересует только файловый кэш через PHP по средствам самой CMS...
 
я бы не стал заморачиваться с кешированием из самой cms ))

проще потратить время и сделавть файловое кеширование nginx (если страниц много) или варниш если страниц мало

если всё таки говорить о кэше в php то смотри в сторону кэша через apc и memcached их таки не зря изобретали (apc например вообще встроен в php)
 
пхп работает с байт кодом, и потому тратиться время, ресурсы пока сорец обработает лексер, потом данные лексера обрабатывает парсер, парсер строит структуру байт кода, - этапы компиляции - бинарные данные содержащие коды операций, их параметры, это происходит каждый раз при обращении к сорцу (исходнику), кешер же, "сохраняет" бинарник (готовые структуры для выполнения) расставляя хуки на компиляцию и выполнение, т.е. цепь запроса уменьшается, соотв падает нагрузка, и увеличивается скорость.
п/с/
возможно данные как-то помечаются какими-то идентификаторами, контрольными суммами или прочим, т.е. при запросе происходит сверка, если идентификаторы совпадают, то значит апдейт кешированых данных не нужен (при изменении сорца к примеру).
 
У себя на joomla-сайтах кэш стараюсь всегда включать. Страницы грузятся заметно быстрее. Замерял различными сервисами.
 
А попробуйте кеш хранить не в файлах, а в memcache. Удивитесь скорости работы по сравнению с файлами.
 
ППЦ. Одно сообщение грамотное от sidxx55
Кто в лес, кто по воду :)
 
invader

поясни пожалуйста о чём ты
в стартовом вопросе ТС нет ни единого намёка на кэширование байткода php

сообщение sidxx55 подробно раскрывает тему разгрузки php и "apc" который помимо собственно кэшера байткода ещё имеет и встроенную возможность кэшировать любые переменные в том числе полученные из mysql (именно в этом контексте его упомянул я)
 
Назад
Сверху