WP rest API vs admin Ajax. Php vs doit utiliser le plugin: gérer les requêtes Ajax dans WordPress
L’api WordPress rest a été intégrée au noyau WordPress dans la version 4.7. Auparavant, les développeurs s’appuyaient sur l’implémentation Ajax par défaut, appelée admin Ajax après le fichier \/ WP admin \/ admin Ajax. Php qui traite les requêtes Ajax dans WordPress. Depuis l’introduction de l’api rest de WordPress, de nombreux développeurs de plug – ins ont commencé à convertir leurs plug – ins en utilisant l’api rest au lieu d’ajax. En plus d’être une technologie plus récente, l’api rest est considérée comme une meilleure option, car moins de noyaux WordPress sont chargés lors d’une demande rest typique et les réponses rest sont toujours dans un format prévisible selon leur scénario. Cependant, est – ce plus rapide que la demande Ajax? Si la performance initiale d’une demande asynchrone est critique, y a – t – il d’autres options?
Dans cet article, nous comparerons les avantages et les inconvénients de chaque méthode. Nous effectuerons également des analyses comparatives pour voir ce qui est plus rapide et comment accélérer le traitement des demandes. Les vieux chiens ont encore de la vie: Ajax dans Ajax WordPress prend en charge la gestion des fichiers Ajax. Php a été ajouté en 2006 pour gérer certaines fonctionnalités de l’interface utilisateur administrateur sans recharger la page. Il est également largement utilisé par les développeurs de plug – ins WordPress et les thèmes comme moyen d’envoyer des requêtes asynchrones dans les sites WordPress. Lorsqu’une demande Ajax typique est envoyée à admin Ajax. Php, chargez d’autres fichiers WordPress importants pour vous assurer que les fonctions principales sont chargées.
WP load. Configuration php \/ WP. Paramètres php \/ WP. Php (charge la plupart des fichiers de base, tous les plug – ins et sujets actifs et l’API rest) \/ WP admin \/ include \/ admin. Php \/ WP admin \/ includes \/ Ajax operation. Après avoir téléchargé ces fichiers, WordPress appelle le crochet admin _ init, auquel vous pouvez ajouter plusieurs fonctions principales. Principales fonctions
L’api rest dans WordPress a été largement utilisée par les développeurs de WordPress Core et de thèmes et plug – ins. L’utilisation la plus courante de l’api rest est dans le développement de nouveaux éditeurs de blocs WordPress. La création de blocs personnalisés pour le nouvel éditeur dépend fortement de l’utilisation de l’API rest via le paquet API Fetch. Les paquets restapi et API Fetch offrent également un plus large éventail de cas d’utilisation pour WordPress. Les développeurs utilisant le cadre JavaScript frontal populaire peuvent créer de beaux thèmes WordPress ou interfaces plug – in sans compter sur PHP pour créer des modèles. De plus, il permet à WordPress de prendre en charge des applications monopage et mobiles, ce qui n’était pas facile auparavant.
Enfin, il fournit aux développeurs de plug – ins WordPress une méthode normalisée pour traiter les données de plug – in personnalisées. Par exemple, woocommerce est entièrement intégré à l’api rest de WordPress. Cela vous permet de créer, lire, mettre à jour et supprimer des données woocommerce telles que les produits et les commandes en utilisant le format de demande de l’API de repos WP et les méthodes d’authentification. Avant cette intégration, les développeurs doivent créer leurs propres paramètres personnalisés pour accéder à ces données de l’extérieur. Black Horse: les plug – ins doivent être utilisés comme dans la plupart des cas dans le développement de logiciels, et il y a plusieurs façons de résoudre les problèmes. Tout en gérant Ajax. Les API PHP et rest sont des choix fiables, avec des avantages même si vous créez des paramètres personnalisés. Le plus important est la performance.
Il existe plusieurs façons de définir des paramètres personnalisés sur les sites WordPress. Le paramètre le plus rapide peut être totalement indépendant de WordPress. Il peut être aussi simple qu’un fichier PHP autonome, téléchargé sur un serveur Web et traitant des requêtes get spécifiques. Même bientôt,
Peut ne pas être très utile car vous ne pouvez accéder à aucune des principales fonctionnalités de WordPress. L’accès à ces fonctions permet généralement d’économiser beaucoup de temps de développement. Une meilleure façon est de créer des paramètres personnalisés dans le plug – in pour traiter les requêtes http asynchrones personnalisées. De cette façon, il peut répondre à toute demande personnalisée après le chargement du noyau WordPress, mais avant le chargement du plugin et du thème. Cela fournit une performance optimale et prévient les conflits d’autres plug – ins qui utilisent l’API rest ou admin Ajax. Php.
Voici un exemple simple de plug – in qui fournit une variable get ou post HFM Ajax et renvoie la valeur Time () dans la réponse. Temps (); Si je l’ai installé sur le site https:\/\/hellfish.media , accessible https:\/\/hellfish.media\/?hfm – Ajax = 1.
Créer des notes de référence et de sécurité. Tous ces tests peuvent être dangereux parce qu’ils n’incluent pas les tests de prévention, d’autorisation ou d’autorisation xss. Si vous utilisez l’un de ces codes comme base du plug – in, assurez – vous que la sécurité appropriée est mise en œuvre. La fonctionnalité plug – in à utiliser est idéale pour notre benchmark, donc tout ce que nous avons à faire est de copier la fonctionnalité pour admin Ajax. API PHP et rest. Tout d’abord, nous créerons une fonction de base qui renvoie une valeur temporelle dans la réponse. Il est donc plus facile de voir que la requête n’est pas mise en cache.
Fonction HFM _ Benchmark request () {WP send json (array (‘time’ = > Time ();} Enregistrez cette fonctionnalité pour admin Ajax. En PHP, nous devons attacher cette fonction à WP _ Ajax nopriv u {$action}. Ajouter _ action (‘WP Ajax nopriv Benchmark request’, ‘HFM Benchmark request’); Nous utilisons wp \ uajax \ unpriv \ u {$action}, donc vous n’avez pas besoin de vous connecter pour tester la demande
Www. Zeustech. Montant net \/
Sous licence à la Apache Software Foundation, http:\/\/www.apache.org\/
Benchmark Dev. Hellfish. Moyen (patience)… Terminé.
Logiciel serveur: nginx
Nom d’hôte du serveur: dev.hellfish. Moyenne
Port serveur: 443
Protocole SSL \/ TLS: tlsv1.2, ecdhe – RSA – chachacha20 – poly13052048256
Clé temporaire du serveur: x25519 253 bits
Nom du serveur TLS: dev.hellfish. Moyenne
Chemin du document: \/ WP admin \/ admin Ajax. Php? Action = Benchmark _ request
Longueur du fichier: 19 octets
Niveau de concurrence: 1
Temps d’essai: 1 995 secondes
Demandes complétées: 100
La demande a échoué: 0
Transfert total: 56 600 octets
Html transféré: 1900 octets
Demandes par seconde: 50,13 [# \/ sec] (moyenne)
Temps de demande: 19.948 [MS] (moyenne)
Temps de demande: 19948 [MS] (temps moyen pour toutes les demandes simultanées)
Vitesse de transmission: 27,71 [kbytes \/ sec] reçu
Temps de connexion (MS)
Minimum médian [+ \/ – écart type] maximum
Connexions: 2 0,2 2 3
Traitement: 16 18 2.2 17 34
Attente: 16 18 2.2 17 34
Total: 18 20 2,3 19 36
Pourcentage de demandes traitées dans un délai déterminé (EM)
50% 19
66% 20
75% 20
80% 20%
90% 22
95% 23%
98% 27
99% 36%
100% 36 (demandes plus longues)
Pour 100 demandes, le temps de réponse moyen était de 19,86 Ms. Cela fournit une bonne base pour effectuer le même test sur l’API rest, donc faisons le test plus tard. AB – N 100 – c 1 – G repos. TSV https:\/\/dev.hellfish.media\/wp-json\/benchmark\/v1\/benchmark [protégé par courriel] :~\/ Apache Bench $AB – N 100 – c 1 – G restant. TSV
> https:\/\/dev.hellfish.media\/wp-json\/benchmark\/v1\/benchmark
Voici Apache Bench, version 2.3
Copyright 1996 Adam twiss, Zeus Technology Ltd, http:\/\/www.zeustech.net\/
Sous licence à la Apache Software Foundation, http:\/\/www.apache.org\/
Benchmark Dev. Hellfish. Moyen (patience)… Terminé.
Logiciel serveur: nginx
Nom d’hôte du serveur: dev.hellfish. Moyenne
Port serveur: 443
Protocole SSL \/ TLS: tlsv1.2, ecdhe – RSA – chachacha20 – poly13052048256
Les clés.
Et serveur temporaire: x25519 253 bits
Nom du serveur TLS: dev.hellfish. Moyenne
Chemin du document: \/ WP json \/ Benchmark \/ V1 \/ Benchmark
Longueur du fichier: 19 octets
Niveau de concurrence: 1
Temps d’essai: 2624 secondes
Demandes complétées: 100
La demande a échoué: 0
Transfert total: 66 200 Octets
Html transféré: 1900 octets
Demandes par seconde: 38,11 [# \/ sec] (moyenne)
Temps de demande: 26240 [MS] (moyenne)
Temps de demande: 26240 [MS] (temps moyen pour toutes les demandes simultanées)
Vitesse de transmission: 24,64 [kbytes \/ sec] reçu
Temps de connexion (MS)
Minimum médian [+ \/ – écart type] maximum
Connexions: 2 0,2 2 3
Traitement: 22 24 1.6 24 33
Attente: 22 24 1,4 23 33
Total: 24 26 1,7 26 35
Pourcentage de demandes traitées dans un délai déterminé (EM)
50% 26
66% 26
75% 27
80% 27
90% 28
95% 29%
98% 35%
99% 35%
100% 35 (demandes plus longues)
Étonnamment, l’API rest est un peu plus lente, avec un temps de réponse moyen de 26,14 millisecondes sur 100 demandes. Dans ces tests, l’API Ajax est environ 27,3% plus rapide que l’API rest. La dernière fois que j’ai comparé ces différences, environ 18%, l’API rest est plus rapide que l’API Ajax. Mais qu’en est – il du plug – in à utiliser? AB – N 100 – c 1 – G Custom Ajax. TSV https:\/\/dev.hellfish.media\/?hfm Ajax = 1 [protégé par courriel] :~\/ Apache Bench $AB – N 100 – c 1 – G Custom Ajax. TSV
> https:\/\/dev.hellfish.media\/?hfm Ajax = 1
Voici Apache Bench, version 2.3
Copyright 1996 Adam twiss, Zeus Technology Ltd, http:\/\/www.zeustech.net\/
Sous licence à la Apache Software Foundation, http:\/\/www.apache.org\/
Benchmark Dev. Hellfish. Moyen (patience)… Terminé.
Logiciel serveur: nginx
Nom d’hôte du serveur: dev.hellfish. Moyenne
Port serveur: 443
Protocole SSL \/ TLS: tlsv1.2, ecdhe – RSA – chachacha20 – poly13052048256
Clé temporaire du serveur: x25519 253 bits
Nom du serveur TLS: dev.hellfish. Moyenne
Chemin du document: \/? HFM Ajax = 1
Longueur du fichier: 19 octets
Nombre
Ellfish Media * Version: 1.0 * auteur Uri: https:\/\/hellfish.media Add _ filter (‘option active plugins’,’ HFM exclude plugins’); La fonction HFM _ exclude plugins ($$plugins) {\/ * * * * * * Si nous n’avons pas exécuté une demande Ajax, veuillez revenir plus tôt. * \/ if (! Defined (‘doing Ajax’) | |! Doing Ajax | |! Doing Ajax |! Issue ($$u request [‘action]) | | Benchmark request’! = $$request ‘! = $$request [‘ action]) {= $$request [‘action]) {{(! Defined (‘ doing Ajax ‘) |! Doing Ajax | |! Issue ($request [‘ action]) | Benchmark request$plugins;} \/ * * Liste des plug – ins à exclure. Retourner le tableau pour les vérifications futures possibles * \/ $denylist _ plugins = array Flip (array ((\
A cette constante peut être utilisée. Au lieu de cela, nous pouvons obtenir la variable request _ URI dans le serveur $u par défaut de la constante PHP et voir si elle correspond à un paramètre personnalisé. Request _ uri = parse URL ($Server [‘request Uri’, PHP URL path); Si (\