Il webhook dei commenti di WP Discourse non attiva un aggiornamento della cache di WP Rocket

Come gestiamo la cache delle pagine in WordPress?

Utilizzo WP-Rocket sul nostro sito, ma la cache delle pagine (stesso problema se si utilizza solo Cloudflare APO) impedisce l’aggiornamento del conteggio dei commenti. L’ho verificato disabilitando WP-Rocket (e/o APO), ho pubblicato una risposta sul relativo post del forum e il conteggio dei commenti si aggiorna, ma in modo erratico. Cioè, non istantaneamente o come ci si aspetterebbe.

Quindi ho trovato un suggerimento per aggiungere un webhook e questo ha permesso al conteggio dei commenti di aggiornarsi in modo affidabile.

Tuttavia, con la cache delle pagine attiva (WP-Rocket o APO), e utilizzando quel webhook, i conteggi dei commenti non si aggiornano quando qualcuno pubblica una nuova risposta nel forum.

Il succo, a quanto pare, è che il webhook non sta attivando correttamente l’ambiente WP per attivare il refresh della pagina memorizzata nella cache. Sembra che potremmo avere un intoppo nella matrice. :grinning_face_with_smiling_eyes:

Modifica: Un’altra cosa. Ho configurato WP-Rocket in modo che quando sono loggato in WordPress, le pagine non vengono memorizzate nella cache per me. Solo per i visitatori. Ho notato che vedo gli aggiornamenti del conteggio dei commenti quando sono loggato in WordPress, ma non li vedo quando sono un visitatore in modalità browser privata.

1 Mi Piace

Non ho risposte, ma come sai WP Rocket sta cercando di fare una copia statica ed eliminare le chiamate PHP e al database. Non è una cache di per sé, ma certo, è una questione di definizione.

Ma WP Rocket ha molti problemi al momento, e questo è forse uno dei meno importanti quando si pensa al sito WordPress stesso.

Beh, in questo modo dovrebbe funzionare.

Ciao @Brandon007, grazie per aver spiegato il tuo problema. Per come lo capisco:

  • Il plugin WP Discourse sta aggiornando correttamente i conteggi dei commenti.
  • La cache di WP Rocket non viene svuotata quando vengono aggiornati i conteggi dei commenti.

Ho cambiato il titolo del tuo post da “WP Discourse Plugin Not Updating Comment Count” a “WP Discourse comment webhook does not trigger a WP Rocket Cache refresh”.

La risposta di base al tuo problema è che questo è il comportamento previsto. Il plugin WP Discourse non ha alcuna integrazione specifica con WP Rocket e non ne aggiungerà una nel prossimo futuro.

Ma posso comunque aiutarti qui aggiungendo un’azione che si attiva dopo che il callback del webhook di sincronizzazione dei commenti ha aggiornato i metadati dell’argomento (dove è memorizzato il conteggio dei commenti). Potresti quindi scrivere il tuo callback di azione per fare qualsiasi svuotamento della cache desideri. Funzionerebbe per la tua situazione?

3 Mi Piace

@Angus hai capito!

Probabilmente mi perderò a scrivere codice haha, ma se riesci a renderlo possibile. Questo mette me e altri utenti un passo nella giusta direzione. Sembra che, con la tua modifica, sarà possibile aggiungere codice lato utente per svuotare la cache di qualsiasi plugin di caching. Sarebbe ancora meglio che concentrarsi su un singolo prodotto. Ho provato diversi metodi di cache su un sito di sviluppo e hanno tutti dato lo stesso risultato.

Quindi vai avanti mio buon signore, e grazie per la risposta.

Ehi Angus. Non sono sicuro se fosse qualcosa che stavi ancora esaminando?

Qualcos’altro che volevo aggiungere. All’interno di WordPress nativo, e utilizzando qualsiasi forma di page caching. Una volta lasciato un commento, la cache della pagina si svuota da sola. Non c’è un modo in cui WP Discourse possa imitare quel comportamento?

Non con WP Rocket. Mantiene i commenti dinamici, come dovrebbe essere.

Ehi Brandon, sì, ci sarà un’azione per questo, che ti permetterà di svuotare la cache di WP Rocket (o di qualsiasi altra cache) in questo scenario nella prossima versione.

Non metto in dubbio le tue capacità o quelle di chiunque altro e non so nulla, ma non può esserci nulla come “o qualsiasi cache” perché, per quanto ne so, WP Rocket necessita di strumenti diversi per svuotare la sua cache rispetto a W3 Total Cache, rispetto a WP Fastest Cache, rispetto a qualsiasi proxy inverso come Varnish o Nginx.

E se WP Rocket sta creando una parte statica della pagina, ovvero la cache, dalla sezione commenti, ci sono problemi molto più grandi dello svuotamento.

Corretto. Il plugin WP Discourse fornirà semplicemente un’azione che consentirà ai siti che utilizzano diverse soluzioni di caching di svuotare la cache al momento opportuno utilizzando il metodo appropriato alla soluzione di caching in uso.

1 Mi Piace

Angus, grazie per il follow-up. Hai un’idea generale sulla data di rilascio?

Inoltre, è possibile che WP-Discourse imiti il comportamento dei commenti nativi di WordPress? Semplicemente, le soluzioni di page caching hanno un’opzione, in modo che la cache della pagina possa essere svuotata quando un utente lascia un nuovo commento su quella pagina. Questo è l’ideale.

Come sai, ad oggi, non siamo in grado di utilizzare alcun tipo di page caching, se vogliamo che il conteggio dei commenti venga incrementato. Questo è un grosso svantaggio per gli utenti di WordPress che sono preoccupati per le ottimizzazioni della velocità.

Speriamo di no, perché un comportamento del genere sarebbe uno spreco di risorse e in realtà quasi un accordo interrotto.

Sono ancora un po’ confuso perché nativamente WordPress non ha la cache e WP Rocket non cancella sicuramente tutta la sua cosiddetta cache dopo un commento.

Solo una nota: l’azione che ho menzionato sopra verrà aggiunta in 2.4.6, che è attualmente in preparazione per il rilascio.

L’azione riceverà gli ID dei post di WordPress aggiornati dal webhook come argomento, ad esempio:

do_action( 'wpdc_after_webhook_post_update', $post_ids );

Vedi ulteriormente

4 Mi Piace

Dimenticavo di menzionare, il tuo aggiornamento ha risolto il problema! Grazie. :+1:t3:

Per chiunque altro riscontrasse questo problema durante l’esecuzione di WP-Rocket con WP-Discourse. Il seguente codice (inserire nel file delle funzioni di Wordpress) garantirà che, una volta effettuato un commento sul post Discourse corrispondente, la cache di quel post verrà eliminata.

if( function_exists( 'rocket_clean_post' ) ){
	add_action( 'wpdc_after_webhook_post_update', 'bulk_rocket_clean_post’);
}

function bulk_rocket_clean_post(array $ids){
    foreach ($ids as $id) {
        rocket_clean_post($id);
    }
}
3 Mi Piace