Digamos que tengo una página con una galería de fotos. Cada miniatura tiene, p. una foto, país, autor, etc. Represento estos elementos/widgets usando etiquetas de plantilla (que cargan plantillas especificadas), va de esa manera por DRY (utilizo estos elementos/widgets por separado en diferentes lugares de la página).Django: renderizar muchas plantillas usando templatetags es muy lento
Y es muy lento.
He realizado algunos perfiles usando Django-debug-barra de herramientas:
SQL Queries: default 84.81 ms (147 queries)
Pero:
Total CPU time: 5768.360 msec
cual es demasiado tiempo para esperar.
Después de algunos análisis, resultó que el principal culpable es la creación de plantillas enginge.
Cuando quiero mostrar, p. 150 fotos, 600 elementos/widgets asociados se están procesando a través de plantillas. Significa 600 operaciones de E/S o incluso más. Mover estos widgets a la plantilla principal resuelve el problema, pero no lo mantiene SECO.
Así que mi pregunta es cómo se puede evitar tal comportamiento? ¿Ser SECO y lento o no SECO y rápido? Prefiero estar seco y rápido ...
¿Puedes proporcionar el código templatetag? –
El tiempo dedicado a las consultas es relativamente pequeño. Pero ORM tarda mucho más tiempo en generar esas consultas y analizar los resultados en instancias modelo –