Потратил некоторое время на доводку модуля cacherouter который позволяет разные таблицы кеша направлять в разные источники хранения. Например, даннные таблицы cache, можно положить в оперативную память посредством xcache apc eaccelerator, а остальные таблицы раскидать по разным инстансам memcached или в один но в shared режиме. Модуль очень сырой, но рабтает достаточно стабильно. Есть много нареканий на shared режим в частности для memcache xcache apc - так как они не имеют своих механизмов блокировок, а использовать flock не очень хочется. Прилагаю свои доработанные модули для 5ки и 6ки. Для 5ки потребуется патчить ядро, эту информацию можно найти в оригинальном модуле, патч для 5.8 есть в issues. 6я версия не требует патча ядра.
PS: обе версии работают в данный момент на разных сайтах в конфигурации eacc + memcache и apc, остальные бэкенды не тестировались. В частности drupal.ru работает на eacc + 3 memcache.
PS2 вопросы и обсуждение в коментарии...
PS3 пакет для мониторинга memcache включен в поставку php_memcache (англ источник)
PS4 Версия для 6.x - если в администрировании вы выключаете сжатие GZip для страниц - нужно в cacherouter.inc (174 строка) закоментировать выдачу заголовка <?php header('Content-Encoding: gzip'); ?>
update: Исправлены небольшие ошибки, убраны отличия версии 5 и 6 в движке кеша (теперь они отличаются только оберткой).
Вложение | Размер |
---|---|
cacherouter5.zip | 23.74 КБ |
cacherouter6.zip | 21.65 КБ |
Комментарии
Спасибо за работу! В закладки.
Доработки еще требуются - у меня расхождение с автором модуля (он предлагает хранить CACHE-TEMPORARY с ttl = 180 секунд, а мне кажется они должны чиститься как и в оригинатьльном cache.inc). Ожнь жестко стоит проблема чистки по маске, собственно она и вынуждает держать lookup таблицы, которые вызывают блокировки.
Как раз хотел спросить про этот модуль. У кого-нибудь он работает в режима файл-кэш? Я поставил модуль, настроил на файл-режим, но что-то никаких изменений не заметил в работе сайта. В папку кэша ничего не записывается. /попробую эту версию, может, сработает/.
Файловую версию не бкатывал, кеширование на файлах лучше взять у Азарова. В данной версии нужно еще напильником пройтись... Но работать должно - кто-то в issues писал, что даже хороших результатов добиться удалось
Установил стандартный Cacherouter на D6 в режим 'file' - стало НАМНОГО быстрее. Хостинг - Лидерхост. Только, вот, не пойму, где же, всё-таки, файлы кэша хранятся??? По указанному в config.php пути ничего нет...
Удивительно, что файлов нет. Настройки при установке прописываются в settings.php - и нигде иначе!
Хоть к данной вещице подступал только раз и то, весьма поверхностно, все-равно, весьма благодарен за работу, потому что в будущем обязательно пригодится, причем многим.
Спасибо, полезно
зачем кеш выносить в память? ее и так не хватает, тем более если на сайте много страниц - то вероятность того что запросят ту что еще не устарела - близка к нулю, кеширование это проблема капитальная и ее еще не решили нормально
kiev1 странный вопрос, память самый быстрый и дешевый носитель. Если её не хватает, что мешает её просто добавить?
у меня на сайте несколько десятков страниц созданных в течении года, пользователь с равной вероятностью запрашивает любую из них, время жизни страницы в кеше ограничено - зачем тратить ресурсы сервера на обслуживание такого кеша? ведь он только тормозить будет все остальное.
Спасибо огромное. Буду пробовать.
блин, не могу установить модуль, скопировал, в админке включил, setting.php дополнил, все равно в меню не появился, может я не там ищу?
подскажите все таки как сделать распределенное кэширование?
в настройках указывается только 'engine' => 'memcache', а для каких таблиц не понятно, как сделать связку eacc и memcache?,
еще вопрос как выбрать eaccelerator кэширование, при установке таких значений 'engine' => 'eacc' сайт вообще не грузится, хотя eaccelerator установлен.
а какое меню нужно? admin/settings/cacherouter в новых версиях
на сегодня можно брать оф-версию, а вот memcache обязательно указывать параметр shared, если все кладется в один инстанс - то есть несколько таблиц будут лежать в одном memcache-сервере.
В eacc лучше сласть таблицы cache cache_block cache_update cache_views, в memcache страницы - cache_page, а остальное default в базу
у меня по этом адресу ни чего не выходит, так же меню не появляется (последняя версия cacheroute из csv)
извени что спрашиваю опять не понимаю все же как именно настроить, напиши пожалуйста на примере, что нужно писать в settings.php для распределенного кэширования?
Действительно, информации по настройке очень мало, даже на английском (или я плохо юзаю гугл)
Но в целом настраивать так:
'default' => array(
'engine' => 'file',
'server' => array(),
'shared' => TRUE,
'prefix' => '',
'path' => './sites/default/files/filecache',
'static' => FALSE,
'fast_cache' => TRUE,
),
'cache_filter' => array(
'engine' => 'db') // cache_filter - слать в базу
);
я понял так, хотелось бы от знающих людей увидеть небольшой ман по настройке, что по-чём, типичные настройки, что в БД, что в файлы, что в eacc, что в мемкешед
p.s. cache_filter почему-то упорно не хотел писаться в файл
p.p.s. не хватает знаний, все-таки eacc быстрее хранения в файлах? т.к. не компилируется или все-таки какие-то нюансы?
Похоже есть возможность избежать блокировок при чистке кеша, по крайней мере для memcached - автор утверждает, что это быстрая операция - энумерация ключей в мемкеше
http://drupal.org/node/381000#comment-1355332
Здравствуйте.
Вошли ли Ваши изменения в ядро модуля?
Данный топик можно смело закрывать - все измения уже в модуле и поддержка ведется через официальные issues