WP Discourse sta effettuando molte richieste a site.json

Sto lavorando a un’integrazione per un cliente e ho monitorato i log di Discourse mentre lavoravo al loro forum Wordpress.

E questo è ciò che ho visto passare (mi scuso per il formato strano del log). L’indirizzo IP è l’indirizzo IP del server Wordpress. Sta eseguendo WP Discourse 2.5.5.

Ho esaminato il codice e non riesco a capire perché sta succedendo questo.

2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.019|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.018|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.018|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.012|429|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.014|429|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.011|429|GET /site.json HTTP/1.1
2 Mi Piace

Immagino provenga da questa chiamata: wp-discourse/lib/plugin-utilities.php at main · discourse/wp-discourse · GitHub

Che apparentemente viene utilizzata in 3 casi:

  • riempire il selettore di categoria in alcuni moduli
  • meta box
  • discourse-sidebar

Sì.
La cosa strana è che dovrebbe essere memorizzato nella cache e non ho motivo di credere che non lo sia.

$categories = get_transient( 'wpdc_discourse_categories' );
if ( ! empty( $options['publish-category-update'] ) || ! $categories ) {
  $body = $this->discourse_request( '/site.json' );
  if ( is_wp_error( $body ) ) {
    return $body;
  }

  if ( $body->categories ) {

    // rimosso per brevità

    // Nota che impostare la cache a 0 disabiliterà la scadenza del transient.
    $category_cache_period = apply_filters( 'wpdc_category_cache_minutes', 10 );
    set_transient( 'wpdc_discourse_categories', $discourse_categories, intval( $category_cache_period ) * MINUTE_IN_SECONDS );

    return $discourse_categories;
  } else {
    return new \WP_Error( 'key_not_found', 'La chiave delle categorie non è stata trovata nella risposta di Discourse.' );
  }
}

EDIT Quando elenco i transient ho una chiave timeout_wpdc_discourse_categories con un valore di timestamp tra 5 minuti, ma non ho wpdc_discourse_categories :thinking:

EDIT 2 set_transient( 'wpdc_discourse_categories', $discourse_categories, intval( $category_cache_period ) * MINUTE_IN_SECONDS ); sta restituendo false. $discourse_categories è correttamente riempito. Altri transient funzionano.

Aggiornamento: Il transitorio semplicemente non viene salvato. Viene salvato quando lo codifico in json_encode().

Inoltre, non sono in grado di riprodurre questo problema su un’altra istanza di WordPress, quindi lo sto spostando al supporto perché credo che sia un problema di WordPress. Sospetto che ci possa essere qualche tipo di plugin di sicurezza che interferisce.

1 Mi Piace