web-dev-qa-db-fra.com

Trop de REST Appels API sur une page?

Une application Web conçue avec des composants très modulaires et de petits composants (dans ce cas à l'aide de directives Angularjs, mais pourrait tout aussi facilement être WebComponents, composants de réactJ ou toute autre technologie). Les composants ont souvent asynchrones REST Appels API, lors de l'initialisation ou lors de l'interaction de l'utilisateur. Cette conception provoque de nombreux appels d'API par page (parfois 20+). Y a-t-il un problème avec cette conception? Certains suggèrent-ils Nous condensons que l'API appelle les API dans des services plus importants à la clientèle qui agissent comme des singletons. SO 10 appels d'API peuvent être réduits à 1, même si une page ne peut utiliser qu'une partie de ces données. Existe-t-il des drapeaux rouges ou des problèmes avec cette conception ? Ce qui devrait être préféré?

8
Ryan Langton

Les navigateurs limitent le nombre total de demandes simultanées

https://stackoverflow.com/questions/561046

Alors oui, il y a un problème avec cette conception. Cependant, je pense que la réponse acceptée consiste à passer à une implémentation sur les sockets Web où vous utilisez une seule connexion, mais avec de nombreux types de messages pour communiquer avec le serveur.

2
Ewan

Cette conception provoque de nombreux appels d'API par page (parfois 20+). Y a-t-il un problème avec cette conception?

Il ne devrait pas y avoir. Le fait que chaque requête soit petite et ASYNC signifie que vous pouvez accélérer grandement votre application Web, plutôt que de devoir attendre une seule grande demande de compléter qui bloque tout.

Assurez-vous simplement que votre JavaScript est correctement asynconciouse et peut faire des choses pendant que vos autres demandes attendent et que vous vous retrouverez avec une grande application que si vous avez eu une demande massive qui a tout récupéré.

Une fois que tous les navigateurs sont conçus pour gérer le chargement de nombreuses URL en tandem, même une page Web standard typique peut avoir des dizaines si non pas des centaines de demandes d'images, CSS, JavaScript, iframes, etc.

2
Cormac Mulhall

N'oubliez pas la taille de chaque demande de réseau. Généralement, si chaque demande ne revient que 2 Ko de données, la demande de réseau est à coûteuse pour cette petite quantité de données.

Si la demande de réseau augmente jusqu'à 400 kb, enfoncez-la en deux. Mais généralement, pas suffisamment de données pour une seule demande de réseau sont plus souvent le problème.

1
dman

Quelques considérations ici:

Performance

Si vous voyez des performances acceptables, vous ne devriez pas trop m'inquiéter à ce sujet. Si vous pouvez réussir à exécuter http2, vous devriez voir une augmentation de la performance. [1] .

Concevoir

Comme pour tout conception, il n'ya pas de règles rapides difficiles quant à savoir si vous devriez faire de nombreuses petites demandes ou quelques grandes demandes. Certaines choses à considérer:

  1. Sont nombreux des appels interdépendants? Si vous avez une relation de dépendance complexe entre différents appels, cela peut faire de la maintenance plus difficile.Si c'est le cas, les données de réponse associées liées au cas échéant.

  2. Est-ce que différents composants partagent une grande partie des mêmes données? Si tel est le cas, vous pourriez avoir un point central qui appelle les appels partagés et permet aux composants d'accéder aux données partagées.

  3. Gardez un œil sur le fardeau de maintenance des petits composants faisant des appels distincts. Vous saurez quand il devient difficile de gérer, puis un changement peut être nécessaire. Changer une conception basée sur les besoins futurs hypothétiques peut provoquer des erreurs de conception, car vous devez anticiper avec précision quels problèmes vous aurez à l'avenir. Si cela fonctionne bien maintenant, changeez cela serait également inutile.

1: "http/2 est entièrement multiplexé permettant de transférer plusieurs fichiers et des demandes à transférer simultanément, par opposition à http1.x qui n'a accepté qu'une seule demande/connexion à la fois. Http/2 utilise la même connexion pour le transfert différent Fichiers et demandes, évitant le fonctionnement lourde de l'ouverture d'une nouvelle connexion pour chaque fichier qui doit être transféré entre un client et un serveur. " - https://css-tricks.com/http2-real-world-performance-test-analysis/

0
Tjaart