alias Phoenix.HTML
@parsers Pleroma.Config.get([:metadata, :providers], [])
+
+ def get_cached_tags(params) do
+ # I am unsure how well ETS works with big keys
+ key = :erlang.term_to_binary(params)
+
+ Cachex.fetch!(:metadata_cache, key, fn _key ->
+ {:commit, build_tags(params)}
+ end)
+ end
+
def build_tags(params) do
Enum.reduce(@parsers, "", fn parser, acc ->
rendered_html =
def redirector_with_meta(conn, params) do
{:ok, index_content} = File.read(index_file_path())
- tags = Metadata.build_tags(params)
+ tags = Metadata.get_cached_tags(params)
response = String.replace(index_content, "<!--server-generated-meta-->", tags)
conn