Migliori pratiche per archiviare dati aggregati per data o altri criteri

2 mar 2024, 19:21:08
Visualizzazioni: 38
Voti: 0

Sto creando descrizioni riepilogative per anno. Per farlo uso update_post_meta al salvataggio per impostare valori come conteggio parole, numero di immagini e conteggio link esterni.

Per una pagina di archivio annuale, itero su ogni articolo per creare somme e poi formattare il risultato.

Con la cache posso essere sicuro di servire risultati memorizzati agli utenti.

Ma durante lo sviluppo con la cache attiva noto comunque lentezza.

Stavo valutando l'uso di un meccanismo simile a cron per creare i riepiloghi HTML in una sottodirectory della cartella wp-content o come elementi wp_object_cache con nomi come summary-YYYY.html per il riepilogo o summary-YYYY.json.

La mia domanda:

Quali sono le mie opzioni per archiviare dati come questi? Esistono best practice per la denominazione delle chiavi nella cache oggetti? Ci sono altri modi per associare dati arbitrari a un anno?

0
Tutte le risposte alla domanda 1
0

Ho deciso di utilizzare wp_cache_set e wp_cache_get che sembrano funzionare bene. Creo una chiave basata sulla classe, funzione e parametri:

$cacheKey = self::createCacheKey( __CLASS__, __FUNCTION__, $referenceYear, $referenceMonth );

Il metodo createCacheKey() appare così:

protected static function createCacheKey( ...$args ): string {
    return implode('-', $args);
}

E mi assicuro di utilizzare una scadenza appropriata. Per le date che non sono di quest'anno o di questo mese, ho impostato scadenze più lunghe.

Il recupero e il ritorno della cache avviene così all'inizio di una funzione:

    $cacheKey = self::createCacheKey( __CLASS__,
                                      __FUNCTION__,
                                      $referenceYear, 
                                      $referenceMonth );
    $cache    = wp_cache_get( $cacheKey, self::CACHE_GROUP );
    if ( $cache ) {
        return $cache;
    }

E alla fine di queste funzioni utilizzo:

    wp_cache_set( $cacheKey, $output, 
                  self::CACHE_GROUP, $cacheExpiration );

Sembra che stia facendo ciò che voglio e migliora le prestazioni, anche se sembra che il luogo predefinito in cui le cose vengono memorizzate e quanto sia affidabile dipenda dalla configurazione del server.

4 mar 2024 07:19:51