2011-07-31 3 views
1

Je développe un portail de véhicule à l'aide de la structure Play et la plupart des fonctionnalités de recherche, d'affichage et de pagination ont été implémentées. Je suis un peu confus quand il s'agit de concevoir la page d'accueil avec la mise en cache à l'esprit.Où stocker les contenus statiques pour la page d'accueil/d'index

La page d'accueil sera un mélange de contenu statique pur et dynamique. Mais les contenus dynamiques (tels que les rapports, les tendances du marché et d'autres blogs publiés par les utilisateurs, les photos d'adv, etc.) pourraient ne pas être mis à jour/ajoutés chaque jour. Je peux penser à deux options:

  1. Pour avoir une page home.html statique avec tout le contenu et modifier la page lorsque le contenu est mis à jour.
  2. Pour que home.html soit rendu dynamiquement à partir du contenu stocké dans la base de données.

Mes questions sont les suivantes:

  1. Lequel est plus gracieux? et généralement plus d'une pratique standard? Y a-t-il un autre moyen que quelqu'un puisse proposer?
  2. Existe-t-il un moyen d'intégrer les systèmes CMS pour gérer ces contenus avec Play-framework? ou Dois-je développer un CMS de base avec Play! et intégrer.
  3. L'utilisation de CMS uniquement pour gérer la page d'accueil semble-t-elle être une méthode standard?

Répondre

3

Ma préférence ici serait de construire une page d'accueil dynamique, qui utilise la fonction de cache dans Play pour améliorer les performances.

Bien que vous puissiez (et il existe déjà des exemples de cela avec Play) où un CMS a été intégré, je pense que cela semble exagéré pour vos besoins. Là où la partie dynamique de votre page ne semble pas trop grande, la maintenir dans une base de données simple devrait être assez simple.

Pour mettre en cache votre page d'accueil, vous pouvez utiliser l'annotation @CacheFor contre l'action du contrôleur. Cela signifie que tout code de base de données, etc., ne s'exécutera qu'une fois par heure et que la sortie sera mise en cache.

+0

Merci! Je suis également intéressé par avoir un hook/CacheId dans le contrôleur de mise à jour/ajout afin que je puisse effacer le cache chaque fois que le contenu est mis à jour. Est-ce que @CacheFor expose un tel identifiant? ou des alternatives? –

+0

Je l'ai compris, oui @CacheFor expose un champ Id et j'ai essayé un échantillon, travaillé comme un charme. Ceci est un autre exemple qui montre que Play offrait presque tout comme nous l'attendions, de manière très intuitive. –

Questions connexes