2010-11-02 6 views
2

Je cherche des façons d'améliorer une page Web qui initie une tâche côté serveur de longue durée (> 2 minutes). La version actuelle de la page ne contient que des horloges pour toute la durée de la tâche, ce qui peut être très frustrant pour l'utilisateur.Amélioration progressive pour les tâches de longue durée

J'ai déjà quelques idées sur la façon dont je pourrais améliorer l'expérience de l'utilisateur, mais toutes impliqueraient l'utilisation d'AJAX dans une certaine mesure. En raison des expériences précédentes que j'ai eu sur ce projet, je sais que tous les utilisateurs n'ont pas activé ou disponible JavaScript.

En supposant que le processus côté serveur a déjà été optimisé autant que possible, que pouvais-je faire d'autre pour améliorer autant que possible l'expérience de tous les utilisateurs?

+0

Avez-vous envisagé d'ajouter un service pour décharger ces tâches de longue durée? Vos pages Web peuvent alors simplement commencer le processus, puis (si le javascript de votre utilisateur le permet), interrogez ce service pour obtenir la progression. Cela vous permettra de continuer à servir les pages sans interrompre la tâche et améliorer l'expérience de votre utilisateur. –

Répondre

2

Déplacez le processus serveur de longue durée hors bande.

Lorsque les utilisateurs lancent la tâche, l'application peut écrire un message dans une file d'attente; Cela est généralement extrêmement rapide, ce qui permet aux utilisateurs de reprendre rapidement le contrôle. Une fois le message mis en file d'attente, un autre processus spécialisé (un service, une tâche planifiée, un travail cron, etc.) le récupère et exécute la tâche appropriée à la première occasion.

Pour les utilisateurs disposant de javascript, vous pouvez configurer un temporisateur pour vérifier l'état de la tâche via AJAX et les alerter lorsque la tâche est terminée.

Vous pouvez tenir vos utilisateurs non-javascript informés en affichant leurs tâches en attente et terminées dans un endroit visible et commun sur vos pages. Bien sûr, ils doivent continuer à naviguer pour en bénéficier, vous devez donc également préciser que les utilisateurs doivent parfois actualiser la page s'ils attendent une tâche.

+0

J'aime vraiment l'idée d'afficher l'achèvement des tâches pendant qu'elles continuent à naviguer. Excellente suggestion, merci! –

+1

Vous pouvez également utiliser une balise pour les utilisateurs non-javascript. J'essaie personnellement d'éviter les actualisations, mais pour quelque chose comme ça, dans le cas où l'utilisateur n'a pas javascript, je pense qu'il est approprié d'actualiser la page toutes les 15 secondes pour mettre à jour le statut. –

1
  • créer la table dans la base de données (ou en mémoire objet)
  • tâche longue durée
  • mettra à jour des progrès dans ce tableau (objet)
  • page Web affichera les données de ce tableau (ou objet). comment actualiser la page - c'est votre choix.
Questions connexes