Une bonne pratique est donc d'éviter au maximum l'utilisation d'une session Http. Il est préférable de stocker les objets dans un cache côté navigateur.

Il n'existe pas à ma connaissance de framework pour gérer le cache côté client dans GWT. La bonne nouvelle c'est que c'est simple à réaliser.

Exemple simple

Prenons un cas simple pour exemlpe. Vous pouvez tout simplement créer un objet qui contiendra en attributs des données de référence. Si l'attribut est à null il faut aller chercher la donnée de référence avec un appel rpc côté serveur. Une fois récupérée, on la stocke dans l'objet qui sert de cache et une fois que l'objet est setter plus besoin de faire d'appel. L'objet de cache pourra être un singleton afin de pouvoir y accéder facilement.

Il vaut mieux ne pas charger tous les objets dès le lancement de l'application, car sinon l'utilisateur risque d'attendre longtemps que toutes les données de références soient chargées avant de pouvoir utiliser l'application.

On peut organiser le cache par module. Un objet de Cache global contiendra des objets de sous-cache par module. Lorsque l'utilisateur souhaite accéder à un écran appartenant à un module on va vérifier que l'objet de sous-cache correspondant à ce module ai été chargé. S'il ne l'est pas, on lance un appel Rpc qui va se charger de le faire. On attendra que la méthode onSuccess de l'AsyncCallBack soit appelée pour afficher l'écran demandé, avec toutes les données qu'il convient.