Mise en cache côté Client dans GWT
Nous avons une gwt-client, qui reçoit beaucoup de données à partir de nos serveurs. Logiquement, je veux mettre en cache les données sur le côté client, en épargnant le serveur de demandes inutiles.
Comme d'aujourd'hui, j'ai laissé monter à mes modèles pour gérer la mise en cache de données, ce qui ne convient pas très bien. C'est aussi devenu un problème depuis plusieurs développeurs dans notre équipe à développer leur propre "mise en cache" de la fonctionnalité, qui inonde le projet à des duplications.
Je suis en train de réfléchir comment on pourrait mettre en œuvre un "point d'entrée unique", qui gère l'ensemble de la mise en cache, laissant les modèles désemparés sur la façon dont la mise en cache est géré.
Quelqu'un a une expérience avec la mise en cache côté client dans GWT? Est-il une approche standard qui peut être mis en œuvre?
OriginalL'auteur Silfverstrom | 2010-03-02
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de regarder dans gwt-présentateur et la
CachingDispatchAsync
. Il fournit un point d'entrée unique pour l'exécution de commandes à distance et donc une occasion parfaite pour la mise en cache.Un blog décrit une approche possible.
OriginalL'auteur Robert Munteanu
Vous voudrez peut-être jeter un oeil sur le Modèle de Commande; Ray Ryan a tenu un discours au Google IO sur les meilleures pratiques dans GWT, en voici la transcription: http://extgwt-mvp4g-gae.blogspot.com/2009/10/gwt-app-architecture-best-practices.html
Il propose l'utilisation du Modèle de Commande à l'aide de l'Action et de la Réaction/Résultat objets qui y sont jetés et le service de proxy. Ce sont d'excellents objets d'encapsuler toute mise en cache que vous souhaitez effectuer sur le client.
Voici un extrait: "j'ai eu une belle unité de la monnaie pour la mise en œuvre de stratégies de mise en cache. Peut être chaque fois que je vois la même demande d'OBTENIR deux fois, je vais le cache de loin la réponse que j'ai eu la dernière fois et il suffit de retourner à moi-même immédiatement. Pas la peine avec un serveur de voyage."
Dans un assez grand projet, j'ai pris une autre direction. J'ai développé un DtoCache objet qui est essentiellement un lieu de référence pour chaque AsyncCallback qui m'attendais à une réponse d'un appel de service dans une file d'attente. Une fois le DtoCache reçu les objets du serveur, ils ont été mis en cache à l'intérieur de la DtoCache. Le résultat mis en cache est désormais renvoyé à tous en file d'attente et nouvellement créés AsyncCallbacks pour le même appel de service.
OriginalL'auteur Jeroen
Pour un déjà-entièrement construit, très sophistiqué moteur de cache pour les opérations CRUD, envisager de Smart GWT. Cet exemple démontre la capacité de le faire côté client des opérations de manière adaptative (lorsque le cache permet) tout en continuant à soutenir la pagination pour les grands ensembles de données:
http://www.smartclient.com/smartgwt/showcase/#grid_adaptive_filter_featured_category
Ce comportement est exposée via la classe ResultSet si vous avez besoin de mettre vos propres widgets sur le dessus de celui-ci:
http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/ResultSet.html
OriginalL'auteur Charles Kendrick
Il y a deux niveaux de mise en cache:
Que cache: dépend de votre application, vous pouvez cache
Comment cache:
OriginalL'auteur Trung
J'ai pensé Itemscript était chouette. C'est une bonne base de données JSON qui fonctionne sur le client (GWT) et le serveur.
Check it out!
-JP
OriginalL'auteur JP Richardson