2 votes

$.ajax cache true duration

J'essaie d'obtenir une liste de tweets (dans ce cas 25 avec un hashtag spécifique) en utilisant $.ajax et la fonctionnalité de recherche de Twitter.

Il y a deux choses qui ne sont pas claires pour moi :

  1. Quelle est la durée de la cache: true (combien de temps faut-il pour qu'il envoie une nouvelle requête au lieu d'utiliser le cache) ? Pour l'instant, il semble que ce soit toutes les quelques secondes, mais j'aimerais connaître la durée précise et savoir si/comment elle peut être modifiée.

  2. Cette recherche d'informations sur Twitter sera effectuée par environ 2 000 à 3 000 personnes à des moments aléatoires, mais probablement pas par la même personne pendant un certain temps. Comment Twitter réagira-t-il à cette situation (en bloquant l'adresse IP en raison d'un trop grand nombre de demandes, peut-être) ? C'est pourquoi je veux mettre les informations en cache pendant environ 1 à 5 minutes, afin de réduire le nombre de requêtes.

TL;DR : Je fais beaucoup de demandes à la fonctionnalité de recherche de Twitter, comment puis-je réduire la charge ?

1voto

Andreas Hagen Points 2235

Le temps de cache pour $.ajax dépend très probablement du navigateur, vous ne devez donc pas compter sur lui pour équilibrer votre charge par rapport à l'API de Twitter. Cette mise en cache peut être désactivée en passant { cache: false } dans le paramètre des réglages. Vous devez plutôt mettre en place votre propre système de cache.

Twitter dispose d'une page décrivant cette situation : https://dev.twitter.com/docs/rate-limiting .

Il indique qu'il envoie des en-têtes pour vous indiquer le nombre de requêtes qu'il vous reste dans un certain laps de temps. Ce que vous devrez faire, c'est mettre en cache suffisamment longtemps pour ne pas dépasser les limites imposées par Twitter. Vous devriez effectuer des tests pour voir comment les différentes charges sur votre service affecteront le nombre total d'appels à l'API de Twitter et concevoir votre système de cache en conséquence. La solution la plus optimale sera probablement quelque chose comme : de a à b'o clock, je devrai mettre en cache pendant c minutes et de d à e'o clock, je devrai mettre en cache pendant f minutes. Une autre solution pourrait consister à mettre en place un système permettant de suivre la charge au fur et à mesure et de déterminer les durées de cache en temps réel. Si ces deux solutions vous semblent décourageantes, vous pouvez probablement vous en tirer en choisissant une durée de cache suffisamment longue pour ne jamais dépasser la limite.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X