На веб-сайте я делаю, существует раздел, который поражает базу данных довольно трудно. Тяжелее, чем я хочу. Данные это получается, все очень статичны. Это будет редко изменяться. Таким образом, я хочу кэшировать его.
Я столкнулся с http://wiki.pylonshq.com/display/pylonsdocs/Caching+in+Templates+and+Controllers и имел хорошее чтение, использовали шаблонное использование кэширования:
return render('tmpl.html', cache_expire='never')
Это работает отлично, пока я не изменяю HTML. Единственным путем я нашел для удаления кэша, должен удалить cache_expire
параметр от рендеринга () и удаляет папку кэша. Но, meh, это работает.
То, что я хочу смочь к, однако, является Списками кэша, Кортежами и Словарями. От чтения вышеупомянутой страницы Wiki кажется, что это не возможно?
Я хочу смочь сделать что-то как:
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
Разрешение мне сделать некоторый ЦП интенсивная работа (перечисляют поколение, в этом примере) и затем кэшировать его.
Это может быть сделано с Опорами?
В качестве альтернативы традиционному кешу вы можете использовать глобальные переменные приложения. После запуска сервера загружайте данные в переменную, а затем используйте данные в своих действиях или направляйте в шаблонах.
http://pylonsbook.com/en/1.1/exploring-pylons.html#app-globals-object
Также вы можете закодировать действие для обновления этой глобальной переменной через интерфейс администратора или с помощью других событий.
Почему бы не использовать memcached?
Посмотрите на этот вопрос о том, как использовать его с пилонами: Пилоны и Memcached