add caching
This commit is contained in:
parent
dd1432d695
commit
70b2bb6ede
3 changed files with 22 additions and 1 deletions
|
@ -84,6 +84,17 @@ def start(_type, _args) do
|
|||
],
|
||||
id: :cachex_scrubber
|
||||
),
|
||||
worker(
|
||||
Cachex,
|
||||
[
|
||||
:metadata_cache,
|
||||
[
|
||||
limit: 2500,
|
||||
default_ttl: :timer.minutes(15)
|
||||
]
|
||||
],
|
||||
id: :cachex_metadata
|
||||
),
|
||||
worker(
|
||||
Cachex,
|
||||
[
|
||||
|
|
|
@ -2,6 +2,16 @@ defmodule Pleroma.Web.Metadata do
|
|||
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 =
|
||||
|
|
|
@ -534,7 +534,7 @@ def redirector_with_meta(conn, %{"maybe_nickname_or_id" => maybe_nickname_or_id}
|
|||
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue