Как мне кэшировать список / словарь в Pylons? - PullRequest
1 голос
/ 13 августа 2010

На веб-сайте, который я создаю, есть раздел, который довольно сильно бьет по базе данных.Тяжелее, чем я хочу.Получаемые данные очень статичны.Это редко изменится.Поэтому я хочу его кешировать.

Я наткнулся на http://wiki.pylonshq.com/display/pylonsdocs/Caching+in+Templates+and+Controllers и хорошо прочитал, использую шаблонное кэширование с использованием:

return render('tmpl.html', cache_expire='never')

Это прекрасно работает, пока яизменить HTML.Единственный способ удалить кеш - это удалить параметр cache_expire из render () и удалить папку кеша.Но, да, все работает.

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

Я хочу иметь возможность сделать что-то вроде:

data    = [i for i in range(0, 2000000)]
mycache = cache.get_cache('cachename')

value = mycache.get(key='dataset1', list=data, type='memory', expiretime='3600')

print value

Позволить мне выполнять некоторую нагрузку на процессор (списокв этом примере), а затем кэшировать его.

Можно ли это сделать с помощью пилонов?

Ответы [ 2 ]

1 голос
/ 13 августа 2010

Почему бы не использовать memcached?
Посмотрите на этот вопрос на SO о том, как использовать его с пилонами: Pylons и Memcached

1 голос
/ 13 августа 2010

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

http://pylonsbook.com/en/1.1/exploring-pylons.html#app-globals-object

Также вы можете написать какое-то действие для обновления этой глобальной переменной через интерфейс администратора или другие события.

...