Dire, ho una pagina con una galleria fotografica. Ogni miniatura ha per es. una foto, un paese, un autore e così via. Rendo questi oggetti/widget usando i tag modello (che caricano i modelli specificati) - va in questo modo a causa di DRY (io uso questi oggetti/widget separatamente in punti diversi della pagina).Django - il rendering di molti modelli utilizzando templatetags è molto lento
Ed è molto lento.
ho eseguito alcuni profiling usando django-debug-barra degli strumenti:
SQL Queries: default 84.81 ms (147 queries)
Ma:
Total CPU time: 5768.360 msec
che è troppo lungo per aspettare.
Dopo alcune analisi si è scoperto che il principale colpevole è la tempistica di enginge.
Quando voglio visualizzare ad es. 150 foto, 600 oggetti associati/widget sono stati resi tramite modelli. Significa 600 operazioni di I/O o anche di più. Lo spostamento di questi widget sul modello principale risolve il problema, ma non mantiene DRY.
Quindi la mia domanda è come si può evitare un simile comportamento? Essere ASCIUTTO e lento o no-ASCIUTTO e veloce? Preferirei essere asciutto e veloce ...
puoi fornire il codice templatetag? –
Il tempo speso per le query è relativamente poco. Ma ORM richiede molto più tempo per generare quelle query e analizzare i risultati in istanze di modello –