Perché i onebox vengono memorizzati nella cache nei post?

Una delle cose che mi dà un po’ fastidio riguardo a Onebox è che il contenuto di Onebox viene memorizzato nella cache nel post e non cambia modificando i campi finché il post non viene modificato.

Ad esempio, creiamo un Onebox da un account e una settimana dopo l’utente modifica la sua biografia…

Ridiscaricare la Onebox ogni volta che la pagina viene visualizzata rallenterebbe notevolmente le cose. Sarebbe inutile ridiscaricare una Onebox che non è mai cambiata. Non c’è modo di sapere se è cambiata, quindi forzare una ricostruzione del post (con la chiave inglese o modificandolo) è la strada da percorrere. Se sapeste che una certa categoria è probabilmente dotata di Onebox che desiderate aggiornare regolarmente, potreste creare un plugin che, ad esempio, rigeneri tutti i topic della categoria su base giornaliera.

6 Mi Piace

In generale, le Onebox vengono memorizzate nella cache perché si desidera limitare il tasso di scraping dei siti esterni a livello locale per evitare di essere bannati! (ma è vero che la cache offre anche vantaggi prestazionali!) Per aggirare la cache, nelle rare occasioni in cui è necessario, basta aggiungere un parametro di query finto come:

?myname=isbill

o qualcosa di simile alla fine del link.

Questo causerà un aggiornamento.

7 Mi Piace

La memorizzazione nella cache degli Onebox è assolutamente necessaria per i contenuti esterni e non ci si aspetta che vengano aggiornati. Mi riferivo agli Onebox interni. Come ho menzionato nell’esempio sopra, ci si aspetta che l’Onebox creato da un utente venga aggiornato su tutti i siti modificando la biografia della persona.

Inoltre, gli Onebox dovrebbero essere memorizzati nella cache anche per i contenuti interni; ciò è necessario per ridurre il carico, ma forse non sarebbe male indicizzare gli Onebox interni da qualche parte e, se il record sorgente cambia, pianificare un’attività di aggiornamento per essi.

Nella situazione attuale, se Discourse aggiorna il formato degli Onebox (nei casi interni), nei vecchi post verrà comunque visualizzato con lo stesso modello. Questo problema verrà risolto se memorizziamo nella cache il contenuto dell’Onebox come JSON nel post e lo formattiamo lato client.

3 Mi Piace

Sto integrando il supporto Onebox nel mio sito e la modifica di un post non aggiorna la cache di Onebox. Inoltre, non vedo un’opzione per “post-rebuild” nel menu della chiave inglese.

Tuttavia, aggiungere una stringa di query finta funziona, anche se tornando all’URL iniziale riappare la versione memorizzata nella cache.

C’è un’impostazione o un trucco che mi sto perdendo?

La mia versione è: Discourse 2.5.5

Fai attenzione: a volte l’uso di una CDN come proxy davanti al sito e l’attivazione del livello di cache nel proxy possono causare problemi. Se stai utilizzando una CDN come proxy (come Cloudflare), disattivala una volta e verifica nuovamente il problema.

Non conosco bene le CDN e non sto usando Cloudflare. Sto solo aggiungendo i metadati og: al mio sito per implementare OpenGraph e quindi Onebox.

Di conseguenza, sto apportando molte modifiche al mio sito e voglio vedere come vengono visualizzate quando vengono richiamate da Discourse.

Ho notato che modificare un post non provoca l’aggiornamento del link da parte di Onebox. Aggiungere ?x=1 all’URL sì.

Onebox dovrebbe riesaminare l’URL di destinazione ogni volta che il post viene modificato?

Non vedo molto interesse per questa funzionalità… mi sembra un bug. A meno che non esista una casella di controllo per attivare o disattivare l’aggiornamento del Onebox?

Come esempio di un approccio alternativo, questa pagina ti permette di testare i tuoi metadati per vedere cosa otterrai, ma funge anche da frontend per la cache di Facebook.

È divertente notare che il loro tag OpenGraph sembra essere rotto! :slight_smile:

Se provi un URL in questo strumento, otterrai i risultati dalla cache, e poi ti verrà fornito un pulsante che puoi utilizzare per rieseguire lo scraping del sito e aggiornare la loro cache.

Potrebbe essere un’opzione interessante per questo strumento… forse un pulsante che appare quando passi il mouse su un URL che è nella cache?

Allo stato attuale, i miei primi test durante l’implementazione di questa funzionalità mostreranno sempre ciò che appare su determinati link.

Stiamo anche cercando un modo per aggiornare le onebox, nel nostro caso le onebox di altri argomenti del nostro forum.

Il nostro caso d’uso è creare documentazione all’interno del forum, che può rielaborare altri post wiki. Tuttavia, dato che si tratta di post wiki, è ovvio che non sia ideale se la onebox non rimane aggiornata con le numerose modifiche che verranno probabilmente apportate nel tempo.

Sarebbe fantastico poter disporre di un’impostazione per aggiornare automaticamente le onebox se corrispondono al dominio del nostro forum e/o appartengono alla categoria in cui si verificherà questo caso d’uso (wiki/doc).

4 Mi Piace

Mentre sto implementando il supporto OpenGraph sul mio sito principale (collegato a Discourse tramite SSO), mi trovo sempre più spesso di fronte a questo problema.

Un trucco che aiuta davvero è non inserire più l’URL effettivo subito, se mai lo faccio. Invece, uso il trucco suggerito da @merefield sopra:

Aggiungo un ?n=1 alla fine di ogni URL la prima volta che lo riferimento. Se la onebox non è soddisfacente, posso aggiornare la pagina, incrementare la mia variabile N e iterare finché non è a posto.

Una volta finito, chiunque inserisca solo l’URL riceverà l’ultima versione della pagina invece della prima.

3 Mi Piace