关于Mako模块,Mako的TemplateLookup函数和Pyramid的一些问题

Jon*_*Ong 7 python mako pyramid

我正在查看Mako的文档,我找到了Mako的TemplateLookup函数:使用TemplateLookup.但是,我从未在Pyramid的文档中看到过这个,因为我从来没有必要指定模块目录.我的问题是:

  1. 创建了什么"模块"?这些是预编译的.pyc文件吗?
  2. 使用TemplateLookup与Pyramid的render()或render_to_response()会更快地模板吗?
  3. Pyramid是否默认创建这些模块,但隐藏在用户看不到的位置?
  4. 从文档中可以看出,这些模块都缓存在内存中.这与通过Beaker缓存有什么不同?

由于我网站上的所有内容都是动态内容(基本上除了页脚),我想找出缓存模板或加快渲染的最佳方法,这看起来像加速渲染的简单方法,如果它甚至可以.

jco*_*ado 5

请在下面找到您的问题的一些答案:

  1. 对于您拥有的每个模板,都会创建一个python模块(.py),其中包含呈现模板所需的代码.这只是模板的优化版本,可以从python轻松执行.执行该模块时,.pyc也会创建该文件.要检查这一点,您可以执行以下实验:

    from mako.template import Template
    Template(filename='template.mako', module_directory='.')
    
    Run Code Online (Sandbox Code Playgroud)

    假设template.mako存在,您将看到template.mako.pytemplate.mako.pyc创建.

  2. 看着pyramid.mako_templating.MakoLookupRenderer.__call__我看到用于在金字塔中渲染mako模板的方法已经使用了一个TemplateLookup对象,所以没有任何区别.

  3. 我看到pyramid.mako_templating.renderer_factory有一个叫做的设置mako.module_directory.这与其他类似设置一起可用于控制mako库行为以创建模块文件.我貌似默认行为是不创建这些文件(mako.module_directoryNone默认设置),但你肯定可以做任何你需要的.

  4. In TemplateLookup是看到一个名为cache_impl默认设置为的参数beaker,所以我猜没有任何区别.