In un nuovo progetto con molto traffico, stiamo pensando a come strutturare la nostra app Symfony2 per sfruttare le cache e essere pronti ad essere più aggressivi in futuro. Mi piacerebbe conoscere la tua opinione.Come strutturare un'app Symfony2 con ESI?
Diciamo che un utente richiede a una pagina un elenco di luoghi. Questa pagina:
- 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)
Il codice HTML potrebbe essere come:
<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>
Il codice HTML verrà memorizzato nella cache sul gateway (Symfony o vernice). L'elenco dei luoghi verrà memorizzato nella cache la maggior parte del tempo anche sul gateway. Le richieste di dati dell'utente saranno quelle che vengono chiamate e non memorizzate nella cache (non inizialmente almeno).
Domande:
- Come ti senti su questa struttura?
- Se l'utente è anonimo, è possibile evitare di eseguire esi-include per i dati utente? Anche se ho un cookie per l'utente anon? Come?
- L'esi-include per il menu utente ha senso?
- O dovremmo dimenticare ESI e passare sempre attraverso il controller (ad esempio la memorizzazione nella cache della visualizzazione renderizzata dei dati comuni)?
- Dovremmo spostare le 2 richieste ESI che richiedono che i dati dell'utente siano chiamate AJAX, invece di attendere sul server?
- È un buon approccio per ridimensionare se abbiamo bisogno di farlo in fretta? Cosa sarebbe meglio?
grazie mille!
grazie un sacco Barius, Stiamo facendo le richieste di dati degli utenti in Ajax, invece che in ESI. Quindi sono d'accordo con te. Vediamo come va. La parte chiave e divertente sarà evitando l'uso di PURGE. È l'obiettivo essere in grado di scalare. – fesja
Condividi come va dopo aver provato –