2010-08-12 6 views
3

Je viens de commencer à essayer MVC 2 et Ajax, et je me demande si je fais quelque chose de mal, parce que j'avais l'impression que Ajax apporterait très rapidement des changements à une page Web. L'exemple que j'ai est le ActionLink Ajax:ASP.NET MVC et Ajax lent?

<div> 
    <%: Ajax.ActionLink("Dita", "AjaxView", new AjaxOptions { UpdateTargetId = "myDiv" })%> 
</div> 
<div id="myDiv"> 
    Change this text</div> 

Et la méthode d'action:

public ActionResult AjaxView(string id) 
{ 
    return Content("Text changed!"); ; 

} 

Ceci est une chaîne de texte simple assez court, et encore il faut environ 1-2 secondes avant que le texte révéler. Peut-être que ajax n'est pas supposé faire ce que je pensais, mais je pensais pouvoir l'utiliser pour des prévisualisations instantanées de texte et d'images comme une fonction de survol (d'ailleurs, je me demandais si le lien d'action pouvait être activé) la méthode d'action sur mouseover plutôt que de cliquer?)

Est-il normal que ce soit si lent ou manque-t-il quelque chose?

+0

Il devrait être extrêmement rapide localement. Exécutez-vous le site Web via Visual Studio ou IIS? Combien de temps faut-il pour charger la première page? – Ryan

+0

Utilisez-vous FF ou Chrome pour les tests? – Yakimych

+0

Je cours le test dans Visual Studio localhost. Il faut environ 3-5 secondes pour que la page se charge. Et puis le lien d'action prend environ 1-2 secondes. Cela varie un peu cependant. Parfois, c'est plus rapide. Mais alors il redevient plus lent ... J'utilise Chrome comme navigateur de test. – Anders

Répondre

3

Il pourrait être un problème de résolution DNS IPv6 avec FF et Chrome lorsque vous travaillez avec localhost . Corrections décrit ici:

Firefox and Chrome slow on localhost; known fix doesn't work on Windows 7

et ici

https://superuser.com/questions/174715/is-there-a-way-to-disable-ipv6-in-googles-chrome

Je voudrais essayer dans IE et Opera pour vérifier si cela fonctionne plus rapidement. Remarque: si c'est effectivement le problème, cela n'a rien à voir avec AJAX.

+0

Merci! Cela semble être la réponse. J'ai essayé avec IE, et cela a fonctionné parfaitement, rafraîchissement instantané, peu importe si j'ai chargé une texttring simple ou une vue partielle (BTW, en apprenant Ajax, il semble charger une page sans la balise body etc semble être la suggestion pour le chargement un morceau de html, mais je n'ai rien lu sur l'utilisation d'une vue partielle pour cela, ne serait-ce pas idéal? Il n'a pas de corps etc pour commencer ... Quoi qu'il en soit, merci encore pour avoir résolu ce problème ! – Anders

0

Je pense que vous avez mal compris. Il n'y a rien à propos d'AJAX qui rendra votre application Web nécessairement plus rapide. AJAX ne fait que charger les informations dont vous avez besoin au lieu de recharger toute la page. De cette façon, vous pouvez apporter des modifications subtiles à la page que vous consultez sans avoir à actualiser la page entière. Le point étant - lorsque vous appelez AjaxView, il doit encore rappeler le serveur, ce qui prendra du temps, peu importe ce que vous faites. La raison pour laquelle cette action est lente pourrait dépendre de différents facteurs; - Votre serveur peut être occupé à faire autre chose, consommer donc des ressources - Vous venez de construire l'ensemble, ce qui rend l'appel plus lent la première fois

+0

Juste, mais tout le battage autour d'ajax, presque le "slogan" semble être "plus d'attente sur les postbacks lents au serveur" même si je sais qu'il doit encore rappeler un petit objet sur le serveur. Mais je pensais que le point serait que c'était si rapide qu'il était à peine perceptible. Donc, si on ne peut pas compter sur ajax pour faire cela, y a-t-il une autre façon de le faire pour les prévisualisations de texte qui sont instantanées? Souhaitez-jquery offrir un meilleur moyen ou serait-ce la même chose (le texte doit provenir du serveur de toute façon ...)? Voir http://www.microsoft.com/sv/se/default.aspx comme un exemple de l'effet que je veux dire (menu de gauche) – Anders

+0

Vous pouvez précharger l'information lorsque vous chargez la page initialement, de sorte que l'information est déjà dans le code HTML envoyé au visualiseurDe cette façon, vous pouvez facilement afficher/masquer/manipuler le code HTML en utilisant une bibliothèque Javascript comme jQuery comme vous le mentionnez. Rappelez-vous que Microsoft Ajax et Jquery s'appuient sur Javascript. Ce ne sont que des bibliothèques qui permettent à tout le monde d'écrire du Javascript propre et fiable. Je jetterais un coup d'oeil à jQuery si j'étais vous. Cela a changé la façon dont j'ai créé les applications Web, et ce n'est vraiment pas si difficile de commencer! –

+0

Ouais, il semble que le problème était le support du navigateur comme indiqué ci-dessus, et puis c'était vraiment très rapide, donc il semble que ça fonctionne bien même si le contenu est sur le serveur. Merci quand même, et j'ai commencé à me pencher sur jquery, ça a l'air vraiment attirant quand même! – Anders