2010-07-15 4 views
2

Je suis confronté à un petit problème de débogage d'une application Web pour un safari mobile. L'application web est une interface pour un outil de simulation côté serveur assez complexe. La vue d'ensemble du fonctionnement de l'application Web est la suivante:Trop grande réponse AJAX pour un safari mobile?

  1. L'utilisateur présente un écran dans lequel il remplit les valeurs pour la simulation à effectuer.
  2. L'utilisateur clique sur "Exécuter la simulation" pour indiquer qu'un appel AJAX est effectué sur le serveur. Un volet d'état sur la page est mis à jour, indiquant que la simulation est en cours d'exécution. Un script php exécute le simulateur avec les valeurs POSTed et renvoie un javascript pour d'abord mettre à jour la barre d'état indiquant que les données sont en cours de récupération, puis configurer un autre appel AJAX pour demander les données résultantes.
  3. Le serveur répond à ce deuxième appel AJAX avec les données de la simulation - quelques grands tableaux au format json (de l'ordre de 1-2mb de données totales), avec du javascript pour effacer le volet d'état, et tracer l'étape initiale des résultats.
  4. L'utilisateur peut alors utiliser des curseurs/onglets pour afficher les différentes parcelles, marcher à travers des pas de temps de simulation, etc ..

Tout cela fonctionne à merveille pour les principaux navigateurs de bureau (IE 7+, Firefox (win , mac, linux), safari (Mac, windows), etc.). Cependant, sur le safari mobile, les étapes 1 et 2 se passent bien (tout javascript est exécuté pour mettre à jour le panneau d'état, etc.) mais tout s'effondre à l'étape 3- il semble que le javascript renvoyé n'est jamais exécuté. ne s'efface jamais et les résultats ne sont jamais tracés).

J'ai inséré quelques alertes à déboguer, mais celles-ci ne sont pas non plus exécutées. Finalement, j'ai essayé de tout renvoyer à l'exception des données de simulation, et tout fonctionne bien (bien que les graphiques soient vides), donc c'est quelque chose qui ne va pas dans ce grand retour de données json. Le débogueur de javascript de safari ne montre aucune erreur, et je n'ai aucune idée comment procéder débogue quelque chose comme ceci. des idées?

+0

1-2 Mo sonne beaucoup s'il est importé dans le DOM en quelque sorte. – Unicron

+0

Les données sont transmises à un objet de tracé personnalisé qui a été créé à l'aide de Raphaël (le tracé possède un curseur temporel, de sorte que l'on peut voir les résultats de la simulation à l'instant t dans la simulation). Donc, à tout moment, seulement environ 10-20k des données sont utilisées. Cela étant dit, puisque le curseur de temps peut être utilisé pour animer les résultats de la simulation, le streaming des données ne fonctionnerait probablement pas bien. Jusqu'à présent, j'ai pu utiliser jusqu'à 10-20mb de données pour tracer de cette façon (mais en utilisant seulement un navigateur sur le serveur local, et en utilisant seulement un navigateur deskotop) – MarkD

Répondre

0

Je ne peux pas vous dire la réponse à votre problème, mais voici comment je debug:

  • Essayez d'obtenir le serveur pour renvoyer seulement quelques kb des données
  • Voir si vous peut imprimer la taille des données
  • répartir les données en petits morceaux plus faciles à gérer (JSON est censé être petit de toute façon)

Pas vraiment une réponse, comme je l'ai dit. Plus une approche.

+0

Merci pour les conseils. Je suis allé de l'avant, et réduit les simulations à seulement courir quelques temps. Il semble que moins de 512k de données renvoyées, tout va bien. Actuellement, il y a trois tableaux json retournés, donc sur le total de dire, 1 mb, chacun est d'environ 350k.Il semble y avoir une limite supérieure que le safari mobile peut gérer - pas sûr que ce soit la taille du segment ou la taille totale des données. Va jouer avec un peu et poster des résultats. – MarkD

+0

Cet article peut faire la lumière: http://www.alistapart.com/articles/putyourcontentinmypocketpart2/ Si vous descendez à la section "Smart phone, tiny brain", il dit qu'il y a une limite totale de 10Mb - I ' Je devine que vous frappez ça. – godswearhats

0

Il existe un problème connu avec Safari (à la fois mobile et de bureau) qui limite la taille de la réponse AJAX à environ 512K. Que se passe-t-il avec les données après?

+2

avez-vous une source pour cela? – rob