1

Hello,

J'ai une question assez spécifique, au cas où par chance l'un de vous aurait déjà eu l'occasion de faire du Python avec le framework Django.

Après avoir appris comment marchaient les templates et créé quelques tags spécifiques pour mon projet, je me suis rendu compte par hasard que les templates étaient parsés à chaque affichage. Je me suis dit que c'était lié à un mode debug ou quelque chose dans le genre, je me suis donc mis en configuration de production : même résultat.

En recherchant sur google "Django cache", on tombe sur cette page qui explique comment fonctionne le framework de cache, j'ai donc eu un peu d'espoir avant de l'essayer à l'instant. Les caches de Django permettent de mettre en cache une page entièrement rendue (c'est à dire avec ses variables et tout), autant dire que pour un site dynamique c'est inutilisable... il a l'air d'y avoir des méthodes pour invalider manuellement le cache, mais ça va devenir plus compliqué que tout gérer à la main.

Du coup j'ai un gros doute : j'ai du mal à croire qu'un framework "connu" comme Django ne propose aucune solution pour quelque chose d'aussi indispensable que conserver un template "compilé" (comme le fait l'excellent Smarty par exemple)... s'il s'amuse à le recompiler à chaque requête, ça va juste être totalement inutilisable en production avec un nombre conséquent d'utilisateurs :/

Je suis passé à côté de quelque chose d'évident, ou bien Django est juste un framework dimensionné pour faire son blog perso avec 3 visiteurs par jour ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

Juste une petite question : comment fais-tu pour détecter qu'il n'y a pas de cache ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

3

http://docs.djangoproject.com/en/dev/ref/templates/api/
django.template.loaders.cached.Loader
By default, the templating system will read and compile your templates every time they need to be rendered. While the Django templating system is quite fast, the overhead from reading and compiling templates can add up.

The cached template loader is a class-based loader that you configure with a list of other loaders that it should wrap. The wrapped loaders are used to locate unknown templates when they are first encountered. The cached loader then stores the compiled Template in memory. The cached Template instance is returned for subsequent requests to load the same template.

For example, to enable template caching with the filesystem and app_directories template loaders you might use the following settings:
TEMPLATE_LOADERS = (
    ('django.template.loaders.cached.Loader', (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )),
)


Est-ce que ça répond mieux à ta question ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4

Erf, j'ai remué google en cherchant à peu près toutes les combinaisons possibles des mots "template" et "cache" sans même penser à regarder là... (ce qui explique pourquoi je ne trouvais pas de réponse ailleurs en fait grin)

Bon bah merci, je commençais à remettre sérieusement en cause mes choix techniques avec cette histoire couic

(sinon pour détecter qu'il n'y a pas de cache, je me rendais juste compte que la fonction utilisée lors du parsing de l'un de mes tags perso était appelée à chaque requête, alors que je m'attendais à ne voir qu'un seul appel)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

6

ui j'aurais du penser à ajouter "compiled" dans ma requête... je suis resté bloqué sur le terme "cache" du coup je n'ai trouvé que des trucs sans trop de rapport... ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

iwannabeamaki (./4) :
toutes les combinaisons possibles des mots "template" et "cache"

Ca en fait deux de combinaisons, non ? grin

8

tripaf
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant