Maison  >  Article  >  interface Web  >  Avantages et inconvénients d'AJAX

Avantages et inconvénients d'AJAX

零下一度
零下一度original
2018-05-28 17:19:312870parcourir

1. Qu'est-ce qu'AJAX

En 2005, Jesse James Garrett d'Adaptive Path a inventé le mot Ajax. Il a donné à Ajax une définition claire dans son article publié « Une nouvelle approche des applications Web », Ajax est un. technologie utilisée pour résumer le chargement asynchrone du contenu de la page. Grâce aux événements de clic de page, les requêtes sont envoyées en continu au serveur, puis le serveur renvoie les dernières données en temps réel. C'est la fonction d'AJAX.

En tant que fusion de plusieurs idées et technologies, si vous le décomposez, ce sont ces mots-clés : JavaScript et XML asynchrones, JavaScript et XML asynchrones. Dans le processus d'utilisation d'AJAX, nous sommes définitivement indispensables dans l'utilisation de ces technologies : utiliser la technologie de représentation basée sur les normes XHTML et CSS, utiliser DOM pour l'affichage et l'interaction dynamiques, utiliser XML et XSLT pour l'échange et le traitement des données et utiliser XML HttpRequest. pour le traitement asynchrone des données. Récupérez et utilisez JavaScript pour combiner les techniques ci-dessus. Parmi eux, la technologie de base d'Ajax est XMLHttpRequest, appelé XHR.

2. Perspectives de développement

Gmail n'a presque aucune différence avec Outlook Express lors de l'envoi et de la réception d'e-mails, et il ne nécessite pas l'installation de programmes clients. Aucun des navigateurs existants ne peut gérer des images complexes comme les programmes de bureau comme PhotoShop. Mais nous ne pouvons ignorer son influence et son impact.

3. Avantages (amélioration de l'expérience utilisateur)

Expérience utilisateur Par exemple, si la communauté où se trouve votre maison est confrontée à une panne d'eau en raison de certaines circonstances, les services compétents ont maintenant annoncé deux Il existe deux options, l'une consiste à arrêter complètement l'approvisionnement en eau pendant 8 heures, à arrêter complètement l'approvisionnement en eau pendant ces 8 heures et à revenir à la normale après 8 heures. Deuxièmement, l'alimentation en eau n'est pas complètement coupée pendant 10 heures. Pendant ces 10 heures, l'eau n'est pas complètement coupée, mais le débit est beaucoup plus faible qu'avant. Après 10 heures, le débit normal est rétabli. quelle méthode choisirais-tu si c'était toi ? Apparemment, c'est ce dernier.

La transmission asynchrone est une transmission orientée caractères, et son unité est un caractère ; tandis que la transmission synchrone est une transmission orientée bits, et son unité est une trame. Lors de la transmission, elle nécessite les horloges du. le destinataire et l’expéditeur sont cohérents.

Asynchrone généralement chaque groupe est un caractère de 8 bits. Il y a un bit de démarrage et un bit d'arrêt en tête et en queue de chaque groupe, qui sont les les horloges du récepteur et de l'expéditeur n'ont pas besoin d'être cohérentes pendant le processus de transmission, c'est-à-dire L'expéditeur asynchrone peut envoyer ces groupes à tout moment, et le récepteur ne sait pas quand il arrive.

Chaque information transmise de manière asynchrone commence par un bit de démarrage , qui informe le récepteur que les données sont arrivées, ce qui donne au récepteur la possibilité de répondre, de recevoir et de mettre en cache le temps de bit de données ; à la fin de la transmission, un bit d'arrêt indique la fin de la transmission de l'information. Le bit d'arrêt ramène le signal à 1, où il reste jusqu'à l'arrivée du bit de démarrage suivant.

Les paquets de bits transmis simultanément sont beaucoup plus gros. Au lieu d'envoyer chaque caractère indépendamment, chacun avec son propre bit de départ et son propre bit d'arrêt, il les combine et les envoie ensemble. Nous appelons ces combinaisons des trames de données, ou simplement des trames. Assurez-vous que la vitesse d'échantillonnage du récepteur est cohérente avec la vitesse d'arrivée des bits, afin que les parties émettrices et réceptrices soient synchronisées.

La synchronisation présente également des avantages : les transferts synchrones sont généralement beaucoup plus rapides que les transferts asynchrones. Le récepteur n'a pas besoin de démarrer et d'arrêter chaque caractère. Une fois les caractères de synchronisation de trame détectés, il les reçoit au fur et à mesure de l'arrivée des données suivantes. De plus, le surcoût de la transmission synchrone est également relativement faible.

Inconvénients : Plus les bits de données sont longs, plus le tampon requis pour mettre en cache les données est grand, ce qui limite la taille d'une trame. De plus, plus la trame est grande, plus elle occupe de temps continu le support de transmission. Dans des cas extrêmes, cela entraînera une attente trop longue des autres utilisateurs.

4. Principe de fonctionnement et technologie sous-jacente sur laquelle il fonctionne

Utilisez l'objet XmlHttpRequest pour envoyer des requêtes asynchrones au serveur, obtenir des données du serveur, puis utiliser javascript pour faire fonctionner le DOM Et mettre à jour la page.

Attributs de l'objet XMLHttpRequest.

Ses attributs sont :

onreadystatechange Le gestionnaire d'événements pour l'événement déclenché à chaque fois que l'état change.

responseText La forme de chaîne des données renvoyées par le processus serveur.

responseXML Un objet de données de document compatible DOM renvoyé par le processus serveur.

status Code numérique renvoyé par le serveur, tel que le commun 404 (introuvable) et 200 (prêt)

status Text Informations de chaîne accompagnant le code d'état

readyState Object valeur d'état

 0 (non initialisé) L'objet a été créé, mais n'a pas été initialisé (la méthode open n'a pas encore été appelée)

 1 (Initialisation) L'objet a été créé, mais la méthode d'envoi n'a pas encore été appelée

 2 (Envoi de données) La méthode d'envoi a été appelée, mais l'état actuel et l'en-tête http sont inconnus

 3 (Les données sont en cours de transfert) Une partie des données a été reçue. La réponse et l'en-tête http étant incomplets, une erreur se produira lors de l'obtention d'une partie des données via ResponseBody et ResponseText. 4 (Complet) Les données ont été reçues. À l'heure actuelle, les données complètes peuvent être obtenues via ResponseXml et ResponseText Response Data

5. ajax

Je vais maintenant me concentrer sur les lacunes d'ajax, car la plupart d'entre nous ont tendance à prêter attention aux avantages qu'ajax nous apporte, comme l'amélioration de l'expérience utilisateur. Les défauts causés par ajax ont été ignorés.

Les défauts d'ajax décrits ci-dessous en sont tous causés. 1. Ajax tue le bouton de retour, ce qui détruit le mécanisme de retour du navigateur. Le bouton Précédent est une fonctionnalité importante d'un site Web standard, mais il ne fonctionne pas bien avec JavaScript. Il s'agit d'un problème sérieux causé par ajax, car les utilisateurs espèrent souvent annuler l'opération précédente en revenant en arrière. Alors, y a-t-il une solution à ce problème ? La réponse est oui. Ceux qui ont utilisé Gmail savent que la technologie ajax utilisée sous Gmail résout ce problème. Cependant, cela ne change pas le mécanisme ajax. pour ce faire, il suffit de créer ou d'utiliser un IFRAME masqué pour reproduire les modifications sur la page lorsque l'utilisateur clique sur le bouton de retour pour accéder à l'historique. (Par exemple, lorsque l'utilisateur clique à nouveau dans Google Maps, il recherche dans un IFRAME masqué, puis reflète les résultats de la recherche sur l'élément Ajax pour restaurer l'état de l'application tel qu'il était à ce moment-là.)

Cependant , bien que ce problème puisse être résolu, le coût de développement qu'il entraîne est très élevé, ce qui est contraire au développement rapide requis par le framework ajax. Il s'agit d'un problème très grave causé par ajax.

2. Problèmes de sécurité

La technologie apporte également de nouvelles menaces de sécurité aux sociétés informatiques. La technologie Ajax revient à établir un canal direct pour les données d'entreprise. Cela permet aux développeurs d’exposer par inadvertance davantage de données et de logique de serveur qu’auparavant. La logique Ajax peut être masquée par la technologie d'analyse de sécurité côté client, permettant ainsi aux pirates de créer de nouvelles attaques à partir de serveurs distants. Ajax est également difficile à éviter certaines faiblesses de sécurité connues, telles que les attaques de scripts intersites, les attaques par injection SQL et les vulnérabilités de sécurité basées sur les informations d'identification.

3. Le support des moteurs de recherche est relativement faible.

4. Détruit le mécanisme d'exception du programme. Au moins du point de vue actuel, les frameworks ajax tels que ajax.dll et ajaxpro.dll détruiront le mécanisme d'exception du programme. Concernant ce problème, je l'ai rencontré lors du processus de développement, mais après vérification, il n'y a quasiment aucune introduction pertinente sur Internet. Plus tard, j'ai fait une expérience moi-même, en utilisant ajax et les modes de soumission de formulaires traditionnels pour supprimer une donnée... ce qui a apporté de grandes difficultés à notre débogage.

5. En outre, il existe d'autres problèmes, tels que la violation de l'intention initiale de l'URL et du positionnement des ressources. Par exemple, si je vous donne une adresse URL, si la technologie Ajax est utilisée, peut-être que ce que vous voyez sous l'adresse URL est différent de ce que je vois sous cette adresse URL. Ceci est contraire à l’intention initiale du positionnement des ressources.

6. Certains appareils portables (tels que les téléphones mobiles, les PDA, etc.) ne prennent actuellement pas très bien en charge ajax. Par exemple, lorsque nous ouvrons un site Web utilisant la technologie ajax sur un navigateur mobile, ce n'est actuellement pas le cas. soutenez-le. Bien sûr, cette question n’a rien à voir avec nous.

6.

Plusieurs frameworks ajax

À l'heure actuelle, les frameworks ajax que nous utilisons incluent principalement ajax.dll, ajaxpro.dll, magicajax. dll et le framework atlas de Microsoft. Il n'y a pas beaucoup de différence entre les deux frameworks Ajax.dll et Ajaxpro.dll, tandis que magicajax.dll est juste plus puissant en encapsulation. Par exemple, il peut renvoyer directement l'ensemble de données DataSet. Comme nous l'avons déjà dit, ajax renvoie toutes les chaînes. . magicajax l'encapsule simplement. Mais cette fonctionnalité peut nous apporter une grande commodité. Par exemple, si notre page a une liste et que les données de la liste changent constamment, nous pouvons utiliser magicajax pour les traiter. L'opération est très simple. nous allons Le contrôle de liste mis à jour est placé dans le contrôle magicajax, puis l'intervalle de mise à jour est défini dans le chargement de la page. Le principe d'atlas est similaire à celui de magicajax. Cependant, une chose à laquelle il faut prêter attention est que ces frameworks ne prennent en charge qu'IE et ne gèrent pas la compatibilité des navigateurs. Vous pouvez le savoir en examinant leurs codes avec des outils de décompilation.

En plus de ces frameworks, la méthode la plus couramment utilisée consiste à créer nous-mêmes des objets xmlHttpRequest. Cette méthode est plus flexible que les frameworks précédents. De plus, je voudrais également mentionner ici l'interface de rappel asynchrone fournie avec aspnet2.0. Comme ajax, elle peut également réaliser une non-actualisation locale, mais son implémentation est en fait basée sur l'objet xmlhttprequest. IE Bien sûr, c'est une stratégie compétitive de Microsoft.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn