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.

2 Likes

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.

3 Likes

Great – this helps a lot. Thanks!

:bomb: all the caches!

1 Like

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

5 Likes

In the redis cli, you can also delete individual keys without flushing the entire redis cache:

# ./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)

I expect that this key schema is unlikely to change often, but if it does, you can just use keys *onebox*url* or even keys *url* to look for the cached key to delete…

I can confirm that I successfully deleted cached oneboxes and rebuilt HTML for posts affected by cached broken data using this method.

7 Likes