Django国际化性能问题(3-4s vs 300ms,USE_I18N = False)

时间:2010-07-15 10:42:57

标签: django performance internationalization

所以,我们有一个包含大量信息的页面,我们经常使用{%trans%},但是当我们实际使用它们(USE_I18N = True)时,网站会停止运行,~3.5秒与i18n对比300毫秒。

我们做了一些分析,似乎翻译初始化需要永远。

20.2%   0.503 /Library/Python/2.6/site-packages/Django-1.2.1-py2.6.egg/django/utils/translation/__init__.py
15.3%   0.383 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/genericpath.py
11.4%   0.285 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/gettext.py
 8.6%   0.215 /Library/Python/2.6/site-packages/Django-1.2.1-py2.6.egg/django/utils/formats.py
 8.5%   0.212 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/posixpath.py
 8.3%   0.206 /Library/Python/2.6/site-packages/Django-1.2.1-py2.6.egg/django/utils/functional.py
 7.6%   0.189 /Library/Python/2.6/site-packages/Django-1.2.1-py2.6.egg/django/utils/translation/trans_real.py

我们尝试将{%trans%}块包装到另一个缓存翻译的模板标签中,但是只获得了几毫秒,并且这些页面实际上不可缓存(当然除了翻译)。

任何人都有这方面的经验,和/或关于如何加快这一进程的一些指示?或者我们可能把自己变成了什么样的陷阱?

2 个答案:

答案 0 :(得分:3)

似乎L10N(django 1.2中的新内容)是罪人。我们通过不启用它来解决它(因为我们无论如何都使用ISO格式)。

可能应该向django报告......: - )

答案 1 :(得分:1)

将您的自定义缓存加入并尝试一些template fragment cacheing - 链接的文档显示如何将其与i18n一起使用