web-dev-qa-db-fra.com

Le moyen le plus performant de récupérer des données API distantes?

J'essaie actuellement d'optimiser rapidement la récupération des données via l'API distante.

Je l'utilise de cette façon:

$response = wp_remote_get('https://some-api.com/endpoint');
$response_body = wp_remote_retrieve_body($response);
$data = json_decode($response_body, true);

Il retourne un tableau de données que je parcourt et enregistre dans des variables appropriées avec lesquelles j'insère ensuite les données à l'endroit où je souhaite les insérer.

Tout cela se fait via AJAX, de sorte que les données sont insérées de manière dynamique.

Le tout prend environ 400-600ms. Mais si j'essaie d'accéder directement au point de terminaison de l'API en collant l'URL de l'API dans la barre d'URL de mon navigateur, cela prend environ 50 ms. Est-ce que le json_decode & enregistrer et sortir des variables compte pour les 400-500 autres? Existe-t-il un autre moyen de réduire l'impact du temps de chargement?

1
Jernej

Le moyen le plus performant de récupérer des données d'API distantes estde ne pas le récupérer du tout. Ainsi, utilisez API transitoires ou WP Cache d'objets pour enregistrer vos résultats calculés pour une utilisation ultérieure et éviter d'appeler une API externe (et des calculs ultérieurs) lors de chaque requête ultérieure. De plus, l'extraction, l'invalidation et la régénération de ces données peuvent être effectuées en arrière-plan, mais il s'agit d'une technique avancée qui dépendra beaucoup de votre architecture actuelle et de votre cas d'utilisation spécifique.

La différence 50ms vs 500ms provient de:

  • connexion à votre propre point de terminaison ajax
  • chargement et exécution d'une partie du moteur WordPress
  • connexion, envoi de la demande au point de terminaison de l'API externe et récupération de la réponse (environ 50 ms)
  • analyser la réponse
  • votre logique de calcul personnalisée

La plupart du temps est consacré aux 3 premières étapes, pas aux 2 dernières. Vous pouvez profiler votre code pour voir l'image complète.

3
Ihor Vorotnov