Кэширование в Django ( Johnny Cache )

Written by

in

Тема очень разнообразна и широка, но постепенно я попробую рассказать о тех, которые пробовал.

Сегодня случилось чудо и я попробовал Johnny Cache

Суть его такова, что берём тупо все SELECT и складываем их в memcached. Кэш автоматически обнуляется при UPDATE или INSERT

Устанавливаем

pip install johnny-cacheCode language: Bash (bash)

или

easy_install johnny-cacheCode language: Bash (bash)

Кому как удобнее.

Дальше всё предельно просто, просто невероятно :))

На сайте в документации приведён вот такой вариант настройки
1 Добавим две строки в MIDDLEWARE_CLASSES

# add johnny's middleware
MIDDLEWARE_CLASSES = (
    'johnny.middleware.LocalStoreClearMiddleware',
    'johnny.middleware.QueryCacheMiddleware',
    # ...
)Code language: Python (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'Code language: Python (python)

JOHNNY_MIDDLEWARE_KEY_PREFIX — надеюсь и так понятно для чего, если вдруг у нас несколько проектов используют mamcached и чтоб объекты не путались, используем префикс для текущего проекта.

Вот собственно и всё, на типовых сайтах с 7-10 запросов на страницу остался одни.
На нагруженных проектах, где на страницу было 20-30 запросов стало также 1-2.

Общее снижение числа запросов в рамках одного сервера тоже значительное в среднем раньше было 100 запросов в секунду, сейчас стало 30-40

Comments

Один ответ для «Кэширование в Django ( Johnny Cache )»

  1. Аватар пользователя Kamo

    Согласно статье на хабре http://habrahabr.ru/post/143789/ использование Johnny Cache для сайтом с большим количеством объектов в таблице — не лучшее решение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *