web-dev-qa-db-fra.com

Comment arrêter WP Point de terminaison de l'API depuis la mise en cache?

J'ai un point d'extrémité simple. Son GET, je lui passe un paramètre ID et il utilise cet ID pour effectuer un appel curl. Le noeud final répond ensuite avec quelques informations json_encoded.

Le problème est que ce noeud final continue à mettre en cache ses résultats. Comment puis-je empêcher que cela se produise?

Notes de couple:

  1. Aucun plugin de cache installé
  2. WP config ne note pas la mise en cache

Le code du noeud final est assez simple:

// Get Number of people in line
add_action( 'rest_api_init', function () {
    register_rest_route( 'cc/v1', '/in_line/(?P<id>\d+)', array(
           'methods' => WP_REST_Server::READABLE,
           'callback' => 'in_line',
           'args' => [
                'id'
            ],
    ) );
} );

function in_line($data) {

  //Do a bunch of Curl stuff

  $response['queue'] = $number;
  $response['queueID'] = $data['id'];

  return json_encode($response);
}

J'appelle le point final via jQuery ajax.

1
TJ Sherrill

Si vous avez accès à l'en-tête de votre demande, vous pouvez ajouter la ligne. Cache-Control: private ou Cache-Control: no-cache. Cela forcera les hôtes bien éduqués à vous envoyer de nouveaux résultats.

1
SungamR

Vous devez créer une nouvelle instance à partir de WP_REST_Response pour définir la valeur Cache-Control.

<?php
// Get Number of people in line
add_action( 'rest_api_init', function () {
    register_rest_route( 'cc/v1', '/in_line/(?P<id>\d+)', array(
           'methods' => WP_REST_Server::READABLE,
           'callback' => 'in_line',
           'args' => [
                'id'
            ],
    ) );
} );

function in_line($data) {

  //Do a bunch of Curl stuff

  $response['queue'] = $number;
  $response['queueID'] = $data['id'];

  $result = new WP_REST_Response($response, 200);

  // Set headers.
  $result->set_headers(array('Cache-Control' => 'no-cache'));

  return $result;
}
0
Mostafa Soufi