8
votes

Pourquoi les téléchargements mes utilisateurs sont-ils aléatoires dans IE?

J'ai des téléchargements qui sont déclenchés par une redirection dans un iframe.

  1. User clique sur le bouton "Télécharger"
  2. Notre JS récupère l'URL de téléchargement du serveur (c'est une URL de chronométrage afin que cela doive être fait de cette façon)
  3. L'IFrame est redirigé vers l'URL de téléchargement, qui contient la disposition du contenu de la pièce jointe. Le navigateur démarre donc le téléchargement sans changer l'emplacement de la page.

    Cela fonctionne bien pour tous les utilisateurs et navigateurs ... Sauf certains utilisateurs à savoir.

    J'ai essayé de reproduire le problème et voici ce que j'ai proposé:

    • Si les boîtes de dialogue "Enregistrer ou ouvrir" sont cliquées rapidement, le téléchargement fonctionne toujours
    • Si les boîtes de dialogue "Enregistrer ou ouvrir" sont cliquées sur lentement (comme 10-20 secondes), les téléchargements fonctionnent parfois, parfois pas. Je n'ai pas été capable de trouver un modèle.

      Voici à quoi il ressemble quand il est bloqué:

      Entrez la description de l'image ici

      Le problème n'est pas du délai de liaison sur S3 - Mes expériences ci-dessus sont bien dans la fenêtre TEMPS.

      Qu'est-ce qui pourrait causer ces échecs de téléchargement sporadique?

      mise à jour

      Les journaux du serveur suggèrent que les téléchargements sont entièrement envoyés à l'utilisateur.


3 commentaires

Normalement, la boîte de dialogue de téléchargement indique la quantité de données téléchargée, est-ce la même chose à chaque fois qu'il se bloque? (Ceci est lié à @ ixe013 réponse)


@Robert Nope, ce n'est pas cohérent entre les échecs. Il a différentes quantités de progrès dans chaque échec.


Si cela fonctionne dans d'autres navigateurs, pouvez-vous voir des différences dans le trafic de IE avec Wireshark?


4 Réponses :


4
votes

Je ne sais pas comment c'est-à-dire le gérer, mais dans d'autres navigateurs pendant que vous choisissez où vous souhaitez stocker le fichier, le téléchargement a déjà démarré. Quel est le délai d'attente de votre URL de téléchargement? Avez-vous essayé de la définir plus haut? Ça marche plus d'une fois? (Sinon, vérifiez votre journal pour des tentatives d'accès ratés). Bonne chance.

PS: si rien ne fonctionne, Essayez ceci .


3 commentaires

Je pensais que cela pourrait avoir quelque chose à voir avec ça aussi, mais 1) Si cela commence à l'avance, il ne l'accède toujours qu'une fois 2) même si cela fait quelque chose d'intelligent / stupide qui finit à y accéder deux fois, l'URL Travaillera toujours pour plusieurs accès dans le délai imparti, qui est 1 minute - bien dans la trajectoire de mes tests.


IE Démarre également le téléchargement pendant que vous choisissez quoi faire avec cela.


C'est correct. Il vous manque tout simplement la gâchette, quoi que ce soit, qui peut être, qui vous dit que le téléchargement est terminé.



0
votes

Quelle version d'IE? IE8 Mauvaise mauvaise conduite Parfois, si vous ne décidez pas quoi faire avec des téléchargements avant qu'il ne remplisse ...

Si le serveur enregistre que les données ont été envoyées au client / navigateur que la prochaine chose à rechercher sont le proxy et le navigateur.

Et votre écran d'écran ressemble en fait à la dialogue de téléchargement lorsque la sélection n'a pas encore été faite. Y a-t-il un écran de sélection quelque part en arrière-plan?


2 commentaires

J'ai pris la capture d'écran après avoir effectué la sélection et les fenêtres de sélection ont disparu. Pourriez-vous élaborer des "mauvais comportement parfois"?


J'ai rencontré la situation lorsque IE8 "oublié / perdu de la piste" de fichier téléchargé lorsque la dialogue Sauvegarder / ouvert n'a pas été action depuis longtemps [heures dans mon cas]. Ce n'est peut-être pas pertinent mais reste le fait.



6
votes

J'ai fait des tests téléchargeant le Suite Test LLVM , un fichier de 78 mégs utilisant IE 9 sous Windows 7. Les téléchargements démarrent lorsque vous cliquez sur le lien. Internet Explorer n'attend pas que vous confirmez ou annulez. Ie enregistre les octets à votre répertoire de téléchargement dans un fichier nommé fizzbuz. partiel . C'est-à-dire rattrapera votre choix en renommant le fichier lorsque c'est fait ou supprimez-le si vous annulez.

Cela pourrait être un problème de synchronisation ou un problème HTTP.

problème de synchronisation

est-il possible qu'un autre processus ouvre le fichier, peut-être même le verrouiller? Peut-être un logiciel de sauvegarde anti-virus ou en temps réel tropé? Les chances sont les opérations de proximité et de renommée (qui doivent avoir lieu puisque le serveur envoyé tout le fichier) va quelque chose comme ceci:

  1. Écrivez les derniers octets valides au Fizzbuzz. fichier partiel
  2. Fermer le fichier
  3. renommer le fichier

    Et si un processus attrape le fichier pour une lecture exclusive entre 2 et 3? Peut-être que cette application apporte des modifications apportées à un fichier comme écrire dans un autre flux NTFS qui se confondent à IE?

    Gardez à l'esprit que les plug-ins de la navigation sont également notifiés de la fin du téléchargement. Un autre type de problème de synchronisation pourrait être causé par un plug-in qui Surveille le téléchargement , et le voyant de la fin, fait une certaine opération. Cette opération pourrait échouer ou ne jamais revenir à quelques occasions.

    Essayez de reproduire le problème sans exécution anti-virus (un meilleur test que de blanchir le fichier) et sans plug-ins de navigateur chargé.

    problème http

    Le serveur et le client doivent être d'accord sur le point de terminer la connexion. Vous devez soit:

    1. Fermez la connexion à la fin du transfert
    2. Spécifiez la longueur du téléchargement

      Il est difficile de déboguer cela à distance, mais si possible, capturez une trace réseau du téléchargement et recherchez ces indices:

      1. L'en-tête de longueur de contenu est absent ou peut-être hors-n (le navigateur attendra éternellement pour N octets (s) qui ne viendra pas)?
      2. Chaque client a-t-il la même configuration proxy?
      3. Les clients non-travailleurs sont-ils rétrogradés vers http 1.0? (Il existe un paramètre nommé "toujours utiliser http 1.0 via proxy"

        de votre coup d'écran, on dirait que le navigateur n'était pas en mesure de calculer le temps d'arrivée estimé, mais il n'y a pas de corrélation entre cela et le téléchargement.


2 commentaires

Je pense que le retard Les causes, c'est-à-dire que la fenêtre de réception de la fenêtre de réception puis de suspendre l'attente d'attendre plus d'informations pour arriver.


Possible, mais mes traces de réseau ne montrent aucune différence dans le processus de téléchargement en ce qui concerne l'attente de l'utilisateur. Étant donné que le serveur envoie le tout, je suppose que la fenêtre de réception est toujours pleine, donnez ou prenez quelques millisecodes de latence de temps en temps.



0
votes

essayez de paramétrer cache-commande: max-eurt à une valeur supérieure à 0. J'ai remarqué que c'est-à-dire que c.-à-d. Peut bousiller comme celui-ci sur le contenu qui doit expirer immédiatement (c'est-à-dire en utilisant non -Cache).


3 commentaires

Intéressant. Pourriez-vous élaborer sur "bousiller comme ça"?


ping - plus d'informations sur cela?


Je n'allais que de problèmes que j'ai rencontrés dans IE6 il y a quelques années, pas sûr de la pertinence de nouvelles versions IE. Le problème était simplement qu'un téléchargement défini sur NON-Cache via des en-têtes HTTP ne peut pas être enregistré sur le disque. Vraisemblablement, c'est-à-dire supprime le téléchargement avant qu'il ne termine, mais ne réussit pas à le réaliser et tente toujours l'action Open / Enregistrer par défaut avec un fichier qui n'existe plus. Je pouvais voir comment cela pourrait également conduire à des progrès bloqués (c'est une mauvaise nouvelle en supprimant un fichier que vous écrivez toujours sur ou en utilisant une poignée dans un fichier supprimé).