Sur un nouveau projet avec beaucoup de trafic, nous réfléchissons à la façon de structurer notre application Symfony2 pour profiter des caches et être prêts à être plus agressifs dans le futur. J'aimerais connaître votre opinion.Comment structurer une application Symfony2 avec ESI?
Supposons qu'un utilisateur demande à une page une liste de lieux. Cette page a:
- list
- common data (title, author, description)
- user data (the user likes the list + other data)
- first 20 places
- common data (title, photo of each place)
- user data (the rates of the user for those places)
Le code HTML pourrait ressembler à:
<html>...
<body>
<header>
...
<!-- Embed the top user menu -->
<esi:include src="http://example.com/profile/menu" />
...
</header>
<content>
...
common data of the list
...
<!-- Embed the common data of the first 20 places, the same for everyone -->
<esi:include src="http://example.com/lists/17/places" />
...
<!-- Embed the user data of the list (used in JS) -->
<esi:include src="http://example.com/lists/17/user" />
...
<!-- Embed the user data of the list of places (used in JS) -->
<esi:include src="http://example.com/lists/17/places/user" />
...
</content>
</body>
</html>
Le code HTML sera mis en cache sur la passerelle (Symfony ou vernis). La liste des lieux sera également mise en cache la plupart du temps sur la passerelle. Les demandes de données d'utilisateur seront celles qui sont appelées et ne seront pas mises en cache (pas au moins initialement).
Questions:
- Comment pensez-vous de cette structure?
- Si l'utilisateur est anonyme, puis-je éviter de créer les esi-includes pour les données de l'utilisateur? Aussi, si j'ai un cookie pour l'utilisateur anon? Comment?
- Est-ce que l'esi-include pour le menu utilisateur a du sens?
- Ou devrions-nous oublier ESI et aller toujours à travers le contrôleur (en cache la vue rendue des données communes par exemple)?
- Devrions-nous déplacer les 2 demandes ESI qui demandent que les données utilisateur soient des appels AJAX, au lieu d'attendre sur le serveur?
- Est-ce une bonne approche à l'échelle si nous devons le faire rapidement? Quel serait le meilleur?
merci beaucoup!
merci beaucoup Barius, Nous faisons les demandes de données utilisateur en ajax, au lieu de ESI. Donc je suis d'accord avec toi. Voyons comment ça se passe. La partie clé et amusante sera d'éviter d'utiliser PURGE. C'est l'objectif de pouvoir évoluer. – fesja
Partagez comment ça se passe après l'avoir essayé –