Clear Onebox Cache

I’m developing a small Onebox plugin and testing it in my production install.

It appears that Discourse is caching the Oneboxes: When I paste a link I once saw oneboxed into a new post, the preview is still looking as if it was generated by an older version of the plugin, while newer links appear as they should. All this is happening in the preview, I’m not actually posting the link.

How can I clear this cache?

Adding a rando querystring is usually the best quick & dirty way.

Yes, that works – but only to circumvent the cache for testing, not to clear it for end users.

Is there a way to really purge this cache? Does it expire eventually?

There’s always the :bomb: option to redis-cli flushall.

Yup, it’ll automatically expire after 24 hours.

Great – this helps a lot. Thanks!

:bomb: all the caches!

Be aware that flushing redis will clear sidekiq’s queue (and thus might end up losing some email notifications)

Redis CLI では、Redis キャッシュ全体をフラッシュせずに個別のキーを削除することもできます。

# ./launcher enter app
# redis-cli
> keys *CACHE:onebox*example.com*
1) `"default: CACHE:onebox__https://example.com/"`
> del "default: CACHE:onebox__https://example.com/"
(integer) 1
> keys *CACHE:onebox*example.com*
(empty list or set)

このキーのスキーマは頻繁に変更されることはないと予想されますが、もし変更された場合でも、削除対象のキャッシュされたキーを探すために keys *onebox*url*、あるいは keys *url* を使用すれば問題ありません。

この方法で、キャッシュされた壊れたデータの影響を受けた投稿の HTML を再構築する際に、キャッシュされた onebox を正常に削除できたことを確認しました。