From e4fe4e7f4b53fc77e0d265526ca63c2a29c91137 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sun, 15 Dec 2024 12:09:29 +0300 Subject: [PATCH] Cache images for 24 hours --- lib/music_library_web/controllers/cover_controller.ex | 7 ++++++- .../controllers/cover_controller_test.exs | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/music_library_web/controllers/cover_controller.ex b/lib/music_library_web/controllers/cover_controller.ex index 8878a036..1b6c3a82 100644 --- a/lib/music_library_web/controllers/cover_controller.ex +++ b/lib/music_library_web/controllers/cover_controller.ex @@ -13,11 +13,16 @@ defmodule MusicLibraryWeb.CoverController do %{cover_data: cover_data, cover_hash: etag} -> case get_req_header(conn, "if-none-match") do [^etag] -> - send_resp(conn, 304, "") + conn + # 24 hours + |> put_resp_header("cache-control", "public, max-age=86400") + |> send_resp(304, "") _ -> conn |> put_resp_content_type("image/jpeg", "utf-8") + # 24 hours + |> put_resp_header("cache-control", "public, max-age=86400") |> put_resp_header("etag", etag) |> send_resp(200, cover_data) end diff --git a/test/music_library_web/controllers/cover_controller_test.exs b/test/music_library_web/controllers/cover_controller_test.exs index 9c62e309..52126195 100644 --- a/test/music_library_web/controllers/cover_controller_test.exs +++ b/test/music_library_web/controllers/cover_controller_test.exs @@ -22,6 +22,7 @@ defmodule MusicLibraryWeb.CoverControllerTest do assert conn.status == 200 assert get_resp_header(conn, "content-type") == ["image/jpeg; charset=utf-8"] + assert get_resp_header(conn, "cache-control") == ["public, max-age=86400"] assert get_resp_header(conn, "etag") == [record.cover_hash] assert conn.resp_body == record.cover_data @@ -35,6 +36,7 @@ defmodule MusicLibraryWeb.CoverControllerTest do assert conn.status == 200 assert get_resp_header(conn, "content-type") == ["image/jpeg; charset=utf-8"] + assert get_resp_header(conn, "cache-control") == ["public, max-age=86400"] assert get_resp_header(conn, "etag") == [record.cover_hash] assert conn.resp_body == record.cover_data @@ -48,6 +50,7 @@ defmodule MusicLibraryWeb.CoverControllerTest do assert conn.status == 304 assert get_resp_header(conn, "content-type") == [] + assert get_resp_header(conn, "cache-control") == ["public, max-age=86400"] assert get_resp_header(conn, "etag") == [] assert conn.resp_body == <<>>