Кеширование предварительно обработанных шаблонов с помощью GAE Memcache API - PullRequest
1 голос
/ 24 апреля 2011

Я использовал эту логику для рендеринга шаблонов в моем приложении GAE:

path = os.path.join(os.path.dirname(__file__), 'page.html')
self.response.out.write(template.render(path, template_values))

Мне интересно, возможно ли (и более эффективно) загрузить не обработанный текст шаблона и сохранить его в Memcache. Кажется, что метод template.render() требует путь к файлу, так возможно ли это?

Редактировать : Для ясности я говорю о кэшировании самого шаблона, а не отрендеренного вывода.

1 Ответ

3 голосов
/ 25 апреля 2011

Google App Engine кеширует шаблоны из коробки, чтобы ваше приложение реагировало.

Вот интересная часть модуля template.py , доступная в исходном коде:

def render(template_path, template_dict, debug=False):
  """Renders the template at the given path with the given dict of values."""
  t = load(template_path, debug)
  return t.render(Context(template_dict))

template_cache = {}
def load(path, debug=False):
  abspath = os.path.abspath(path)

  if not debug:
    template = template_cache.get(abspath, None) # <---- CACHING!
  else:
    template = None

  if not template:
    directory, file_name = os.path.split(abspath)
    ...

Как видите, единственное, что нужно иметь в виду, это избегать установки debug = True в Production.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...