WP Discourse realiza muchas solicitudes a site.json

Estoy trabajando en una integración para un cliente y tenía un seguimiento de los registros de Discourse mientras trabajaba en su foro de Wordpress.

Y esto es lo que vi pasar (disculpen el formato extraño del registro). La dirección IP es la dirección IP del servidor de Wordpress. Está ejecutando WP Discourse 2.5.5.

He estado revisando el código y no puedo entender por qué está sucediendo esto.

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 Me gusta

Me imagino que viene de esta llamada: wp-discourse/lib/plugin-utilities.php at main · discourse/wp-discourse · GitHub

La cual aparentemente se usa en 3 casos:

  • llenar el selector de categoría en algún formulario
  • meta box
  • discourse-sidebar

Sí.
Lo extraño es que se supone que está en caché y no tengo ninguna razón para creer que no lo esté.

$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 ) {

    // removed for brevity

    // Note that setting the cache to 0 will disable transient expiration.
    $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', 'The categories key was not found in the response from Discourse.' );
  }
}

EDIT: Cuando enumero los transitorios, tengo una clave timeout_wpdc_discourse_categories con un valor de marca de tiempo en 5 minutos, pero no tengo wpdc_discourse_categories :thinking:

EDIT 2: set_transient( 'wpdc_discourse_categories', $discourse_categories, intval( $category_cache_period ) * MINUTE_IN_SECONDS ); está devolviendo false. $discourse_categories está correctamente rellenado. Otros transitorios están funcionando.

Actualización: El transitorio simplemente no se guarda. Se guarda cuando lo json_encode().

Además, no puedo reproducir esto en otra instancia de Wordpress, así que lo estoy trasladando a soporte porque creo que es un problema de Wordpress. Sospecho que podría haber algún tipo de plugin de seguridad interfiriendo.

1 me gusta