速度比较:服务器生成的HTML与模板?
我在使用Google App Engine的Django模板,编程语言是Python。
在模板里放循环和在Python的处理页面里放循环,性能上有没有什么大区别呢?
比如,我在比较这样的代码:
{% for i in items %}
<div id="item_{{i.key}}">
{{i.text}}
</div>
{% endfor %}
和在我的Python代码里放这样的代码:
def returnHtml(items):
item_array = []
for i in items:
item_array.append("<div id='item_%s'>%s</div>" % (i.id, i.text)
return "".join(item_array)
... 然后直接把结果放到Django模板里的标签里,比如:
{{ item_html }}
这只是一个简单的例子,实际上我有更复杂的循环嵌套等等。我喜欢把逻辑放在Python代码里,因为这样更容易维护。但是我担心这样会影响性能。
有什么想法吗?谢谢。
4 个回答
1
可以看看这里报告的性能测试结果 链接。
2
如果你去测试一下,我相信你会发现一些差别,但我觉得这些差别根本不重要。每个用户的加载时间差异可能连眨眼的时间都不到,我想没有人会注意到。
另一方面,没什么能阻止你在发布之前就把模板编译好,这样运行时的性能基本上和在代码中循环时是差不多的。
总之,在这种情况下,做任何能让你生活更轻松的事情就好……在GAE上,你更应该花时间好好设计你的数据,减少访问数据存储的次数等等。