Тема очень разнообразна и широка, но постепенно я попробую рассказать о тех, которые пробовал.
Сегодня случилось чудо и я попробовал Johnny Cache
Суть его такова, что берём тупо все SELECT и складываем их в memcached. Кэш автоматически обнуляется при UPDATE или INSERT
Устанавливаем
[cc lang=”bash”]pip install johnny-cache[/cc]
или
[cc lang=”bash”]easy_install johnny-cache[/cc]
Кому как удобнее.
Дальше всё предельно просто, просто невероятно :))
На сайте в документации приведён вот такой вариант настройки
1 Добавим две строки в MIDDLEWARE_CLASSES
[cc lang=”python”]# add johnny’s middleware
MIDDLEWARE_CLASSES = (
‘johnny.middleware.LocalStoreClearMiddleware’,
‘johnny.middleware.QueryCacheMiddleware’,
# …
)[/cc]
Также опишем бэкЭнд
[cc lang=”python”]
# some johnny settings
CACHES = {
‘default’ : dict(
BACKEND = ‘johnny.backends.memcached.MemcachedCache’,
LOCATION = [‘127.0.0.1:11211’],
JOHNNY_CACHE = True,
)
}
JOHNNY_MIDDLEWARE_KEY_PREFIX=’jc_myproj'[/cc]
JOHNNY_MIDDLEWARE_KEY_PREFIX – надеюсь и так понятно для чего, если вдруг у нас несколько проектов используют mamcached и чтоб объекты не путались, используем префикс для текущего проекта.
Вот собственно и всё, на типовых сайтах с 7-10 запросов на страницу остался одни.
На нагруженных проектах, где на страницу было 20-30 запросов стало также 1-2.
Общее снижение числа запросов в рамках одного сервера тоже значительное в среднем раньше было 100 запросов в секунду, сейчас стало 30-40
Согласно статье на хабре http://habrahabr.ru/post/143789/ использование Johnny Cache для сайтом с большим количеством объектов в таблице – не лучшее решение.