Integrar escrituras JSON progresivas

pom_cache_json_write() almacena una carga JSON propiedad de la aplicación en el árbol JSON progresivo del sitio actual. Devuelve true solo después de que una carga admisible se haya escrito correctamente.

Escribir una carga

$relative_path = 'archive/book/page-2.json';
$payload = array(
    'items' => $public_items,
    'page'  => 2,
);
$json = wp_json_encode( $payload );

if (
    false !== $json
    && function_exists( 'pom_cache_json_write' )
) {
    $written = pom_cache_json_write(
        $relative_path,
        $json,
        array(
            'integration' => 'my_catalog',
            'post_type'   => 'book',
            'cacheable'   => true,
        )
    );
}

El asistente requiere:

  • el interruptor maestro de JSON progresivo;
  • escrituras JSON habilitadas;
  • una ruta relativa .json segura y normalizada;
  • una cadena JSON no vacía dentro del tamaño máximo configurado;
  • JSON válido;
  • una decisión pom_cache_json_should_write permitida;
  • un destino con permiso de escritura.

Crea los directorios que falten, escribe a través de un archivo temporal con un bloqueo y mueve ese archivo a su lugar. No escribas directamente en la ruta final de la caché.

Vetar una escritura

add_filter(
    'pom_cache_json_should_write',
    static function ( $should_write, $relative_path, $json, $context ) {
        unset( $relative_path, $json );

        if ( ! $should_write ) {
            return false;
        }

        return ! empty( $context['cacheable'] );
    },
    10,
    4
);

El filtro decide si se almacena; no modifica el JSON. Coloca en el contexto hechos estables como el tipo de entrada, la configuración regional y el nombre de la integración. Nunca pongas secretos allí, porque otras devoluciones de llamada pueden inspeccionar el array.

Observar escrituras

POM Cache emite:

add_action(
    'pom_cache_json_before_write',
    static function ( $file, $json, $context ) {
        // Lightweight observation before the temporary write.
    },
    10,
    3
);

add_action(
    'pom_cache_json_after_write',
    static function ( $file, $json, $context ) {
        // The final file has been moved into place.
    },
    10,
    3
);

La acción «antes» puede ejecutarse incluso si una operación posterior del sistema de archivos falla. La acción «después» es la señal de finalización. Mantén ambas devoluciones de llamada rápidas; no registres la carga completa cuando pueda contener datos personales o comercialmente sensibles.

Contrato de generación POM Theme

POM Cache escucha:

do_action(
    'pom_progressive_archive_json_generated',
    $relative_path,
    $json,
    $response,
    $context
);

Escribe solo cuando $context['cacheable'] es verdadero. Un generador debe decidir la posibilidad de caché a partir de la semántica pública de la respuesta, no solo a partir de un estado HTTP exitoso.

Diseño de la clave

Cada variación pública debe asignarse a una ruta relativa determinista distinta. Incluye la configuración regional, el tipo de entrada, la paginación y el estado de los filtros públicos cuando cambien la carga. Excluye por completo el ID de usuario, el nonce, la sesión o los parámetros secretos; esas cargas deben permanecer dinámicas.

Después de cambiar el formato de la clave, purga el antiguo árbol JSON del sitio actual o retira explícitamente las rutas obsoletas. POM Cache no puede inferir que dos rutas relativas diferentes representan versiones sucesivas de la misma respuesta lógica.