问题
So, we have a page with quite a lot of information on in, and we use {% trans %} a lot, but when we actually use them (USE_I18N=True) the site grinds to a halt, ~3.5 seconds with i18n vs 300ms with it off.
We did some profiling and it seems the translation initialization takes forever.
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
We tried wrapping the {% trans %} blocks into another templatetag which caches the translations, but that only gained a couple of ms, and the pages are not really that cacheable (except for the translations of course).
Anyone have any experience with this, and/or some pointers on how to make this go faster? Or any pitsfalls we might have gotten ourselfs into?
回答1:
Seems L10N (new in django 1.2) was the sinner. We solved it by not enabling it (as we use ISO formats everywhere anyways).
Probably should report this to django.. :-)
回答2:
Bin your custom caches and try some template fragment cacheing - the docs linked show how you can use it with i18n
来源:https://stackoverflow.com/questions/3254791/django-internationalization-performance-issues-3-4s-vs-300ms-with-use-i18n-fals