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!
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.