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

Тема в разделе "Мегафлуд", создана пользователем Горбушка, 21 дек 2012.

  1. Горбушка

    Горбушка Ищу её...

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

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

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

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

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

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

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

    Флудить не обязательно =)
     
  2. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    если файловое кеширование в CMS реализовано правильно то выигрыш очень большой по нагрузке,
    но это ТОЛЬКО если есть большое количество просмотров одной и той же старницы

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

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

    в этом случае второй запрос не грузит не только mysql а и apache и php, те сайт отдаётсмя с той скоростью с какой бы отдавались простейшие статичные html странички
     
    Горбушка нравится это.
  3. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    420
    Симпатии:
    285
    Можно в память кэшировать. Reddit вообще всё подряд кэширует (если вообще не всё).
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.034
    Симпатии:
    2.035
    o_nix, с 1000-ым постом тебя =)

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

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

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

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

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    я бы не стал заморачиваться с кешированием из самой cms ))

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

    если всё таки говорить о кэше в php то смотри в сторону кэша через apc и memcached их таки не зря изобретали (apc например вообще встроен в php)
     
    Горбушка и Caxap нравится это.
  6. sidxx55

    sidxx55 Free IC, SG-PS decoding, encoding

    Регистр.:
    12 май 2007
    Сообщения:
    332
    Симпатии:
    211
    пхп работает с байт кодом, и потому тратиться время, ресурсы пока сорец обработает лексер, потом данные лексера обрабатывает парсер, парсер строит структуру байт кода, - этапы компиляции - бинарные данные содержащие коды операций, их параметры, это происходит каждый раз при обращении к сорцу (исходнику), кешер же, "сохраняет" бинарник (готовые структуры для выполнения) расставляя хуки на компиляцию и выполнение, т.е. цепь запроса уменьшается, соотв падает нагрузка, и увеличивается скорость.
    п/с/
    возможно данные как-то помечаются какими-то идентификаторами, контрольными суммами или прочим, т.е. при запросе происходит сверка, если идентификаторы совпадают, то значит апдейт кешированых данных не нужен (при изменении сорца к примеру).
     
    Alex.Volk и invader нравится это.
  7. ulsk

    ulsk

    Регистр.:
    10 май 2009
    Сообщения:
    153
    Симпатии:
    72
    У себя на joomla-сайтах кэш стараюсь всегда включать. Страницы грузятся заметно быстрее. Замерял различными сервисами.
     
  8. CAPAXA

    CAPAXA

    Регистр.:
    7 июн 2007
    Сообщения:
    896
    Симпатии:
    535
    А попробуйте кеш хранить не в файлах, а в memcache. Удивитесь скорости работы по сравнению с файлами.
     
  9. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.718
    Симпатии:
    5.693
    ППЦ. Одно сообщение грамотное от sidxx55
    Кто в лес, кто по воду :)
     
  10. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    invader

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

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