Por que oneboxes são cacheados em posts?

Uma das coisas que me incomodam um pouco sobre o Onebox é que o conteúdo do Onebox é armazenado em cache na postagem e não é atualizado ao alterar os campos, a menos que a postagem seja editada.

Por exemplo, criamos um Onebox a partir de uma conta e, uma semana depois, o usuário altera sua biografia…

Baixar novamente o Onebox toda vez que a página fosse visualizada deixaria tudo bem mais lento. Seria tolo baixar novamente um Onebox que nunca mudou. Não há como saber se ele mudou, então forçar uma reconstrução do post (com a chave de fenda ou editando) é o caminho a seguir. Se você soubesse que alguma categoria provavelmente teria Oneboxes que deseja atualizar regularmente, poderia criar um plugin que, por exemplo, recriasse todos os tópicos da categoria diariamente.

6 curtidas

Geralmente, os Oneboxes são armazenados em cache porque você deseja limitar a taxa de raspagem de sites externos localmente para evitar ser banido! (mas, claro, o cache também traz benefícios de desempenho!) Para contornar o cache na ocasião rara em que precisar, basta adicionar uma string de consulta fictícia como:

?myname=isbill

ou algo assim no final do link.

Isso causará uma atualização.

7 curtidas

O cache do Onebox é absolutamente necessário para conteúdo externo e não há expectativa de que ele seja atualizado. Refiro-me aos Oneboxes internos. Como mencionei no exemplo acima, espera-se que o Onebox criado por um usuário seja atualizado em todos os sites ao alterar a biografia da pessoa.

Além disso, os Oneboxes devem ser armazenados em cache para conteúdo interno, o que é necessário para reduzir a carga, mas talvez não seja ruim indexar os Oneboxes internos em algum lugar e, se o registro de origem mudar, agendar uma tarefa de atualização para eles.

Na situação atual, se o Discourse atualizar a formatação do Onebox (para casos internos), nas postagens antigas ele continuará sendo exibido com o mesmo padrão. Esse problema será resolvido se armazenarmos o conteúdo do Onebox como JSON na postagem e formata-lo no lado do cliente.

3 curtidas

Estou implementando o suporte ao Onebox no meu site e editar uma postagem não está atualizando o cache do Onebox. Também não vejo uma opção de “reconstrução pós-publicação” no meu menu de chave de fenda.

No entanto, adicionar um parâmetro de consulta falso funciona, embora, se eu voltar para a URL inicial, a versão em cache apareça novamente.

Existe alguma configuração ou truque que estou perdendo?

Minha versão é: Discourse 2.5.5

Cuidado: às vezes, usar uma CDN como proxy na frente do site e ativar a camada de cache no proxy pode causar problemas. Se você estiver usando uma CDN como proxy (como a Cloudflare), desative-a uma vez e verifique o problema novamente.

Não estou familiarizado com CDNs e não estou usando o Cloudflare. Estou apenas adicionando metadados og: ao meu site para implementar o OpenGraph e, assim, o Onebox.

Como resultado, estou fazendo muitas alterações no meu próprio site e quero ver como elas aparecem quando referenciadas pelo Discourse.

Percebi que editar uma postagem não faz com que o onebox atualize o link. Adicionar um ?x=1 à URL sim.

O onebox deve reescanear a URL de destino cada vez que a postagem é editada?

Não estou vendo muita adesão a isso… parece um bug para mim. A menos que haja uma caixa de seleção para ativar ou desativar a atualização do Onebox?

Como exemplo de uma abordagem alternativa, esta página permite que você teste seus metadados para ver o que obterá, mas também serve como uma interface para o cache do Facebook.

Engraçado que a tag OpenGraph deles parece estar quebrada! :slight_smile:

Se você tentar uma URL nesta ferramenta, ela buscará os resultados do cache e, em seguida, fornecerá um botão que você pode usar para re-raspar o site e atualizar o cache deles.

Isso poderia ser uma opção interessante para esta ferramenta… talvez um botão que apareça ao passar o mouse sobre uma URL que está no cache?

Como está, meus primeiros testes ao implementar essa funcionalidade mostrarão sempre o que aparece em certos links.

Também estamos buscando uma maneira de atualizar os oneboxes, no nosso caso, os oneboxes de outros tópicos em nosso fórum.

Nosso caso de uso é criar documentação ao longo do fórum, que pode reutilizar outros posts de wiki. No entanto, como são posts de wiki, obviamente não é ideal que o onebox não se mantenha atualizado com as muitas edições que provavelmente serão feitas ao longo do tempo.

Seria ótimo se pudéssemos ter uma configuração para atualizar automaticamente os oneboxes se eles corresponderem ao domínio do nosso fórum e/ou pertencerem à categoria onde esse caso de uso ocorrerá (wiki/docs).

4 curtidas

Enquanto estou implementando o suporte ao OpenGraph no meu site principal (vinculado ao Discourse via SSO), tenho enfrentado esse problema com cada vez mais frequência.

Uma dica que realmente ajuda é não inserir a URL real imediatamente, se é que alguma vez o faço. Em vez disso, uso o truque sugerido por @merefield acima:

Adiciono um ?n=1 ao final de cada URL na primeira vez em que a referencio. Se a onebox não ficar boa, posso atualizar a página e depois incrementar minha variável N, iterando até que ela fique correta.

Quando termino, qualquer pessoa que insira apenas a URL receberá o último raspamento da página, em vez do primeiro.

3 curtidas