2010-12-12 16 views
2

J'ai une page qui télécharge un gros fichier HTML à partir d'un autre domaine servira alors à l'utilisateur. Le fichier est environ 100k - 10MB et prend habituellement environ 5min. Que pensait-il de faire quelque chose comme ça pour améliorer l'expérience de l'utilisateur.une meilleure expérience utilisateur pour le site Web en asp.net MVC

  • fichier télécharger
  • si le fichier est télécharger pas dans les 10 secondes puis affiche une page qui indique à l'utilisateur que le fichier est en cours de téléchargement
  • si le serveur termine le téléchargement en 1 seconde alors il servira la html téléchargé

cela peut être fait? dois-je utiliser la fonction async?

question Mise à jour: le fichier téléchargé est un fichier html

Répondre

0

Je pense que vous devriez:

  1. Retour une page HTML pour éloigner l'utilisateur directement, pour leur dire que le transfert a commencé.
  2. télécharger le document de l'autre domaine dans un processus séparé sur votre serveur.
  3. Ce code HTML de l'étape 1 recharger à plusieurs reprises, de sorte que vous pouvez vérifier si le téléchargement a déjà terminé, et peut-être donner une ETA ou mise à jour à l'utilisateur.
  4. Renvoie un lien vers l'utilisateur lorsque le transfert initial est terminé.
+0

Le problème avec Non 1. est que quelques fois le téléchargement se termine très rapidement (en 1 sec) et il devrait juste servir le fichier de téléchargement. – Joanne

+0

Je ne vois pas comment l'étape 1 est un problème ... si le fichier est téléchargé en 1 seconde, alors l'utilisateur obtiendra le lien de téléchargement après 1 seconde aussi bien. –

+0

mon mauvais. devrait préciser que le fichier est html. donc si le serveur termine le téléchargement en 1 seconde, il servira le html téléchargé. – Joanne

0

Il semble que vous deviez utiliser une page en attente qui se rafraîchit de temps en temps et affiche l'état de votre téléchargement. Le téléchargement peut être exécuté sur un thread séparé en utilisant un System.Threading.Task, par exemple.

+1

pas besoin d'actualiser la page entière ... plutôt d'avoir un appel ajax-interroger le service de téléchargement sur le serveur pour le statut et la progression. –

+0

Oui, ça me semble bien :-) – Chad

1

Afin de fournir un téléchargement de fichier « asynchrone » essayer un truc que Google utilise: Créer une iframe cachée et définissez sa source dans le fichier que vous voulez télécharger. Vous pouvez toujours exécuter javascript sur votre page d'origine pendant le téléchargement du fichier via l'iframe.

+0

Google est-ce vraiment le cas? – Thiago