[help] Организация кэширования

Тема в разделе "PHP Pro", создана пользователем CrashX, 5 мар 2011.

Статус темы:
Закрыта.
  1. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    Организация кэширования запросов или страниц, или как то иначе ?
    как лучше
    есть несколько идей, тк раньше делал сайты на фаилах
    использую БД, все хорошо но хочу заранее перейти границу когда будет трафик, тк нагрузка вырос тет а менять хостинг не вариант, да и не условно бесплатные проекты хостинга не напасешся.

    идея первая
    -
    есть обработка в классе БД, в нем можно каждый запрос (текст) сохранять в фаил который будет иметь имя md5 суммы от самого запроса там, все просто сверять дату создания фаила и текущую, или по крону пере создавать

    при повторном обращении загружать, уже из фаила.
    минуя запрос (на малых данных и базах менее 1гб прироста не будет, даже тормоза могут быть)

    ---
    идея вторая
    ------
    мы выполняем все и кешируем на уровне шаблонизатора, как только страница готова в кеш ее (только контент, не динамические элементы) тут экономится время на запрос и генерацию, но на выходе получается статика... если внутри должна быть динамическая реклама то некакит

    ----
    может есть еще идеи?
     
  2. exn

    exn Постоялец

    Регистр.:
    22 янв 2010
    Сообщения:
    146
    Симпатии:
    23

    общеприменимо три вида кеширования
    1 полностью сгенерированного контента
    2 частичное кеширование (тобиш конкретных элементов)
    3 данных


    что касается первых 2х пунктов то вариантов где и как это хранить - море , в основном это файлы.

    для 3го лучше memcached, но есть варианты хранения в файлых тоже

    в каждой программе способы работы с этими кешами реализуются по разному, так что вам виднее куда сунуть кусок кода .
    рекомендую взглянуть на классы программ использующих кеширование или вообще специализированные разработки.
     
  3. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    я в них смотрю в некоторых довольно криво реализовано, те при определненных собитиях будет беда.

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


    у меня пока идея о 4 вариантах
    - в памяти для часто запрашиваемых элиментах, тк у меня есть конструктор форм и он загружает мелкие теги что бы избавится от обращения я храню дубль в памяти, расход рама больше на 10-20кб мелочи.
    - потом есть уже кеширование запросов к БД
    - теперь продумываю схему кеширования модулей
    - ну а кэширование страниц стоит продумать на будущее
     
  4. Miraage

    Miraage Angular/Laravel

    Регистр.:
    3 июн 2008
    Сообщения:
    230
    Симпатии:
    51

    кэшировать запросы в БД можно либо через
    Код:
    SELECT SQL_CACHE ....
    или eaccel/memcached сохранять мд5-ключ = результат запроса, это понятно.
    касательно страницы:
    представь, что у тебя страница из двух-трех слоев.
    где первые два слоя - это либо кэши, либо статика. их ты впервую очередь будешь выплевывать через flush()
    и третий слой: либо кэш, либо динамический контент самой страницы
    например:
    Код:
    // что-то там
    print( Cache::get( 'doc_layer_0' ) ); // <!DOCTYPE ...><html>.....
    flush();
    // что-то там
    print( Cache::get( 'doc_layer_1' ) ); // меню, шапка, футер, 
    flush();
    // потом выводишь контент и закрываешь html документ соотв. тегами
    
     
  5. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    футер, хеадер, баннер зоны, меню кешировать нельзя усилено нельзя.
    только блок контенкта, например 20-30 статей выводимых в центральный блок!
     
  6. Xata6

    Xata6 Постоялец

    Регистр.:
    20 мар 2007
    Сообщения:
    84
    Симпатии:
    5
    кешируй центральную часть, и модули часто отображаемые, с редко обновляемой инфой и не парься.

    по мне оптимум это кеш запросов, и некоторые модулей\частей сайта и все.
     
  7. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    смысл переписывать мой пост ?
    если есть интересные идеи а не слова, типа можно вопрос больше в алгоритме где и как вы это видите если это описано выше то ненадо об эом писать по 10 раз.
     
  8. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    http://highload.com.ua/index.php/2010/04/06/nginx-memcached-ssi-%D0%BA%D0%B5%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86-%D0%B8-%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2-partials/
     
  9. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    это плюшки из вне, nginx ставтят не все хостеры, хотя у меня на серваке он есть) инче млохо ему, тк трафи в сутки более 60гб
     
  10. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Организация кеширования только средствами пхп это бред. Лучше сразу тогда отказать от кеширования)
     
Статус темы:
Закрыта.