我正在破解一个小模板引擎。我有一个生成一串动态生成代码的类(自负地命名为模板编译器)。
例如 :
def dynamic_function(arg):
#statement
return rendered_template
在渲染时,我针对此代码调用内置函数exec ,并使用自定义全局字典(为了尽可能控制潜在恶意用户插入到模板中的代码)。
但是,我需要缓存已编译的模板以避免每次执行都编译它。我想知道是否最好将字符串存储为纯文本并每次加载它或使用编译来生成 code_object 并存储该对象(例如使用搁置模块)。
也许值得一提的是,最终我想让我的模板引擎线程安全。
感谢阅读!托马斯
编辑:正如 S.Lott 强调的那样,更好本身并没有意义。我的意思是更好更快,消耗更少的内存更简单,更容易调试。当然,更多更美味的免费咖啡会更好。