我在查看 Mako 的文档时发现了 Mako 的 TemplateLookup 函数:Using TemplateLookup .但是,我从未在 Pyramid 的文档中看到过这一点,因为我从来不需要指定模块目录。我的问题是:
- 创建了哪些“模块”?这些像预编译的 .pyc 文件吗?
- 使用 TemplateLookup 与 Pyramid 的 render() 或 render_to_response() 会让模板更快吗?
- Pyramid 是否默认创建这些模块,但隐藏在用户看不到的地方?
- 根据文档,它说这些模块缓存在内存中。这与通过 Beaker 进行缓存有何不同?
由于我网站上的所有内容都是动态内容(基本上除了页脚),我想找出缓存模板或加速渲染的最佳方法,这看起来是一种加速渲染的简单方法,如果它甚至可以。
最佳答案
请在下面找到您问题的一些答案:
对于您拥有的每个模板,都会创建一个 python 模块 (
.py
),其中包含呈现模板所需的代码。这只是模板的优化版本,可以从 python 轻松执行。执行该模块时,还会创建.pyc
文件。要检查这一点,您可以进行以下实验:from mako.template import Template Template(filename='template.mako', module_directory='.')
假设
template.mako
存在,您将看到创建了template.mako.py
和template.mako.pyc
。查看
pyramid.mako_templating.MakoLookupRenderer.__call__
我看到用于在 Pyramid 中渲染 mako 模板的方法已经使用了一个TemplateLookup
对象,所以有不会有任何区别。我在
pyramid.mako_templating.renderer_factory
中看到有一个名为mako.module_directory
的设置。这与其他类似设置一起可用于控制mako
库行为以创建模块文件。我看起来默认行为不是创建这些文件(mako.module_directory
默认为None
),但您当然可以做任何您需要的事情。在
TemplateLookup
中看到一个名为cache_impl
的参数,默认设置为beaker
,所以我猜没有任何区别。
关于python - 关于 Mako 模块、Mako 的 TemplateLookup 函数和 Pyramid 的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9028504/