У меня серьезная проблема с моими шаблонами. После некоторого теста я узнал, что самая медленная часть рендеринга - это миниатюры, создаваемые из sorl-thumbnail. Ниже выданная часть из моего шаблона:sorl-thumbnail - Медленный отрисовка шаблона
{% for listing in listings %}
<li class="pic_view">
<ul>
<li class="picture">
<a href="{% url 'listing' listing.id listing.title %}">
{% thumbnail listing.get_picture "240x143" crop="center" as im %}
<img src="{{ im.url }}">
{% empty %}
tc
{% endthumbnail %}
<div class="overlay"></div>
</a>
</li>
<li class="artist">
<a href="{% url 'profile_artist' listing.artist_id listing.artist.user.first_name %}">
{% thumbnail listing.artist.get_avatar "60x60" crop="center" as im %}
<img src="{{ im.url }}">
{% empty %}
tc
{% endthumbnail %}
</a>
</li>
</ul>
</li>
{% endfor %}
В настоящее время у меня есть около 6 списков и ниже измеренное время для рендеринга:
- 8512 ms on first rendering
- 4680 ms on reload
- 112 ms when thumbnail tags are removed
Можете ли вы дать мне несколько советов по этому вопросу. Число, указанное выше, измеряется с помощью Debug=True
, но нет разницы, когда флаг False. Также в соответствии с Django
документации, я включил в себя следующие TEMPLATE_LOADERS
:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
('django.template.loaders.cached.Loader', (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)),
)
Какой бэкэнд вы используете для сорла? есть разные варианты, но я считаю, что memcached или redis должны быть быстрее, чем использовать DB, особенно если у вас много записей. – petkostas