Commit graph

4 commits

Author SHA1 Message Date
Mario de la Ossa
e5705f5c54
Banzai - avoid redis if attr is in DB cache
When cache_collection_render runs we end up reading and writing
things to redis even if we already have the rendered field cached
in the DB. This commit avoids using redis at all whenever we have
the field already rendered in the DB cache.
2019-07-10 21:35:43 -06:00
Patrick Bajao
de21320db2 Remove requirement for id for #markdown_cache_key
It's not needed anymore as we require `#cache_key` instead.
2019-06-05 20:06:41 +08:00
Patrick Bajao
56d52340da Use #cache_key of subject for generated redis key
This commit also includes some changes in specs to use
`Class.new` approach.
2019-06-05 14:36:54 +08:00
Patrick Bajao
2eecfd8f9d Use Redis for CacheMarkDownField on non AR models
This allows using `CacheMarkdownField` for models that are not backed
by ActiveRecord.

When the including class inherits `ActiveRecord::Base` we include
`Gitlab::MarkdownCache::ActiveRecord::Extension`. This will cause the
markdown fields to be rendered and the generated HTML stored in a
`<field>_html` attribute on the record. We also store the version
used for generating the markdown.

All other classes that include this model will include the
`Gitlab::MarkdownCache::Redis::Extension`. This add the `<field>_html`
attributes to that model and will generate the html in them. The
generated HTML will be cached in redis under the key
`markdown_cache:<class>:<id>`. The class this included in must
therefore respond to `id`.
2019-06-05 13:19:59 +08:00