2010-01-29 4 views
0

Alors que j'architecte mon projet, je pense que je dois faire quelque chose de mal. Certaines parties du code du modèle sont réutilisables, ce qui me donne envie d'extraire le code du modèle, mais je n'arrive pas à trouver un bon moyen. Par exemple, certains boutons sont de la même conception tout au long du site Web. Quelle est la meilleure façon de l'extraire de la page? C'est ici que j'ai considéré l'utilisation de balises d'inclusion simples ou d'inclure des fichiers.django modèle de code réutilisable

Maintenant, c'est bien, sauf que je suis également très préoccupé par l'optimisation de la vitesse. Après avoir fait des tests, j'ai trouvé que l'utilisation de tags simples est 50% plus lente que la simple modélisation en ligne et que les tags d'inclusion sont plus de 350% plus lents. Ceci est une préoccupation car certaines parties de code qui sont dupliquées sont dans des endroits qui sont en boucle dans la liste. Ainsi, par exemple, lorsque je montre une liste d'éléments, j'ai un code pour le vote haut/bas qui est dupliqué sur le site. Si j'utilise quelque chose comme une balise d'inclusion, cela ajouterait beaucoup de poids pour le site. Y a-t-il une meilleure façon de faire tout cela?

Si je mets de la vitesse, devrais-je essentiellement compromettre DRY pour accélérer les choses?

Répondre

1

Utilisez ce qui vous empêche de vous répéter. Je suis fan des tags d'inclusion pour des choses comme les boutons.

Si vous construisez pour la vitesse, utilisez Django's cache framework, pour éviter de refaire le même travail encore et encore, particulièrement en regardant template fragment caching.

+0

Exactement. C'est une optizimation prématurée. Il est peu probable que le système de gabarit soit vraiment le goulot d'étranglement; Plus important encore, vous ne savez pas encore si c'est le cas. Vous construisez donc des modèles moins maintenables afin d'optimiser quelque chose dont vous ne savez même pas qu'il doit être optimisé. De plus, Django 1.2 ajoute la mise en cache des modèles chargés, ce qui pourrait faire disparaître cette performance pour la plupart. –

+0

merci les gars, je pense que vous avez absolument raison. Carl, je pense que ton commentaire est très révélateur. Je pense que j'ai été obsédé par les mauvaises choses. Merci pour l'information :) – killerbarney