Bir prefetch queryset cadıyla bir django şablonu oluştururken gerçekten bir performans sorunu yaşıyorum (üretim ortamında ~ 1000 nesne/geliştirme ortamında ~ 200 nesne) ancak çok sayıda yuvalama düzeyine sahip.Django şablon oluşturma hızı
stories = Story.objects.select_related(
'commande',
'commande__societe',
'commande__plateforme',
'client',).prefetch_related(
Prefetch('crm_message_related',
queryset=Message.objects.select_related(
'societe',
'plateforme',
'type_message').order_by('-date_received')),
Prefetch('commande__crm_feedback_related'),
Prefetch('commande__crm_guarantee_related'),
Prefetch('commande__soyouz_item_related',
queryset=Item.objects.select_related(
'etat', 'produit', 'produit__produit_enhanced',)),
Prefetch('commande__tagged_items__tag'),
Prefetch('commande__soyouz_item_related__tagged_items__tag'),
Prefetch('commande__soyouz_item_related__soyouz_annulationclient_related'),
Prefetch('commande__soyouz_item_related__soyouz_achat_related'),
Prefetch('commande__soyouz_item_related__soyouz_achat_related__soyouz_receptionachat_related'),
Prefetch('commande__soyouz_item_related__soyouz_achat_related__soyouz_annulationachat_related'),
Prefetch('soyouz_action_related'),
Prefetch('soyouz_action_related__receptionmessage__message',
to_attr='receptionmessages',
queryset=Message.objects.order_by(
'-date_received').select_related(
'societe', 'type_message', 'plateforme'))
).order_by(
'-commande__date_commande',
'-date_created'
).all().distinct()
sorunsuz SQL çalıştırmak, konuyu şu değil: İşte
getirilmeyen olduğunu. benim şablon cadı O üretim ortamında sayfayı görüntülemek için yaklaşık 10 sn sürer öldürmekle{% for story in stories %}
{% with items=story.commande.soyouz_item_related.all %}
{% for item in items %}
{% for tag in item.tagged_items.all %}
<button>{{ tag.tag }}</button>
{% endfor %}
{{ item.titre|safe|truncatechars:50 }}
{% endfor %}
{% endfor %}
olduğunu işlemek çalıştığınızda
konu
olduğunu. (Geliştirme ortamında) 200 verileriyle 3 döngüler içinname Times Tot Time Queries Queries Time
stories.html 1 2814,1 ms 0 0 ms
3 saniye:
Ben gerçekten django-template-zamanlama (https://github.com/orf/django-debug-toolbar-template-timings) ve benim geliştirme ortamında profilli? Çok görünüyor.
Şablon oluşturma hızını iyileştirmek için herhangi bir fikir var mı?
Çok teşekkürler!
"DEBUG = False" ile denediniz mi? Django'nun şablon dili, hızı için bilinmemektedir, ancak bu aşırı gibi görünmektedir ve ben-döngülerin özellikle yavaş olduğuna inanmıyorum.Sadece emin olmak için: 200 hikaye, etiket, toplam öğelerden mi bahsediyorsunuz? – knbk
in dev: 200 hikaye - hikaye başına 1 öğe - 0 tag ürün kodu: 1000 hikaye - hikaye başına 1 veya 2 öğe - öğe başına 1 tag – Tigrou
DEBUG = Yanlış üretim ortamında zaten ayarlanmış – Tigrou