web-dev-qa-db-fra.com

stocke/cache les données envoyées par ajax pour éviter les requêtes répétées

J'ai développé un widget qui offre un outil de recherche d'archive complet, dans lequel l'utilisateur peut sélectionner diverses options qui sont jointes dans un objet à transmettre à WP_Query dans une action ajax qui renvoie les données de résultat via JSON.

10 résultats sont renvoyés à la page, une pagination est donc nécessaire. Une nouvelle demande est envoyée chaque fois que la page est tournée. Plus ici .

Ma question est la suivante: pour réduire la charge de la requête, je souhaite que, si l'action est appelée après une rotation de page, les informations relatives à la requête ne sont pas envoyées mais uniquement l'ordre de modification de la page.

Pour y parvenir, je suppose que la solution consiste à stocker la requête déjà envoyée.

Comment est-il possible de faire cela?

merci!

3
Bakaburg

Tentative de répondre directement à cette question: si les données que vous renvoyez sont exactement les mêmes à chaque fois, vous pouvez envoyer des en-têtes de contrôle/expiration du cache avec votre réponse AJAX afin que le navigateur sache qu'il ne doit plus demander à nouveau pendant un certain temps. .

// ask the browser to cache this response, to reduce requests
$expires = 60 * 15;        // 15 minutes
header('Pragma: public');
header('Cache-Control: maxage=' . $expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');

Mais si vous voulez chaque fois des données différentes, ce qui semble être le cas (via la pagination), la mise en cache ne fait rien pour vous ici. Cette réponse à votre autre question explique pourquoi vous feriez mieux de prendre de petits morceaux à la fois.

2
webaware