wake-up-neo.com

Wie man aufhört WP API-Endpunkt aus dem Caching?

Ich habe einen einfachen Endpunkt. GET, ich übergebe ihm einen ID-Parameter und er verwendet diese ID, um einen Curl-Aufruf zu tätigen. Der Endpunkt antwortet dann mit einigen Informationen json_encoded.

Das Problem ist, dass dieser Endpunkt seine Ergebnisse immer wieder zwischenspeichert. Wie verhindere ich das?

Paar Notizen:

  1. Keine Caching-Plugins installiert
  2. Die WP-Konfiguration bemerkt kein Caching

Der Endpunktcode ist ziemlich einfach:

// 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);
}

Ich rufe den Endpunkt über jQuery Ajax an.

1
TJ Sherrill

Wenn Sie Zugriff auf Ihren Anforderungskopf haben, können Sie die Zeile hinzufügen. Cache-Control: private oder Cache-Control: no-cache. Dadurch werden gut erzogene Hosts gezwungen, Ihnen neue Ergebnisse zu senden.

1
SungamR

Sie sollten eine neue Instanz aus WP_REST_Response erstellen, um den Cache-Control-Wert festzulegen.

<?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