Comment puis-je mettre en cache des données dynamiques à partir d'une API REST en utilisant PHP?
-
27-09-2019 - |
Question
Mise à jour: J'ai décidé de suivre les conseils ci-dessous et mettre en œuvre un niveau Memcached dans mon application. Maintenant, j'ai une autre pensée. Serait-il possible / une bonne idée de faire une demande d'AJAX sur un sondage (disons tous les cinq ou dix minutes) que les chèques Memcached et mises à jour lorsque Memcached est arrivé à expiration? De cette façon, le temps d'attente est jamais vécue par l'utilisateur final, car il est effectué en arrière-plan.
J'utilise l'API REST Directed Edge pour faire des recommandations sur mon application Web. Le problème que je rencontre est que la requête I pour un nombre important de recommandations dans plusieurs endroits à travers le site, et la latence est importante, ce qui rend la charge de la page quelque chose comme 2-5 secondes pour chaque requête. il a l'air terrible.
Je ne suis pas en utilisant les liaisons PHP Directed Edge et à la place je utilisant des liaisons PHP je me suis écrit. Vous pouvez voir les fixations sur GitHub. Je me connecte à leur API en utilisant cURL .
Comment puis-je mettre en cache les données que je reçois? Je suis ouvert à un certain nombre de méthodes aussi longtemps qu'ils sont assez faciles à mettre en œuvre et assez flexible.
Voici un exemple du code client pour obtenir des recommandations.
$de = new DirectedEdgeRest();
$item = "user".$uid;
$limit = 100;
$tags = "goal";
$recommendedGoals = $de->getRecommended($item, $tags, $limit);
La solution
Vous pouvez mettre en cache dans un fichier de la sérialisation et file_put_contents:
file_put_contents("my_cache", serialize($myObject));
Vous pouvez également le cache memcached ou une base de données.