Merge branch 'proxy-no-default-plug-cache' into 'develop'
authorlambda <pleromagit@rogerbraun.net>
Mon, 21 Jan 2019 16:19:15 +0000 (16:19 +0000)
committerlambda <pleromagit@rogerbraun.net>
Mon, 21 Jan 2019 16:19:15 +0000 (16:19 +0000)
Always override plug's default cache-control in reverse proxy

See merge request pleroma/pleroma!692

lib/pleroma/reverse_proxy.ex

index a3846c3bb882dae9a938487f0b37125a4649f5b0..a25b5ea4e16f0af9c804d65a53a4fd4a7afd3fd4 100644 (file)
@@ -275,11 +275,24 @@ defmodule Pleroma.ReverseProxy do
 
   defp build_resp_cache_headers(headers, _opts) do
     has_cache? = Enum.any?(headers, fn {k, _} -> k in @resp_cache_headers end)
-
-    if has_cache? do
-      headers
-    else
-      List.keystore(headers, "cache-control", 0, {"cache-control", @default_cache_control_header})
+    has_cache_control? = List.keymember?(headers, "cache-control", 0)
+
+    cond do
+      has_cache? && has_cache_control? ->
+        headers
+
+      has_cache? ->
+        # There's caching header present but no cache-control -- we need to explicitely override it to public
+        # as Plug defaults to "max-age=0, private, must-revalidate"
+        List.keystore(headers, "cache-control", 0, {"cache-control", "public"})
+
+      true ->
+        List.keystore(
+          headers,
+          "cache-control",
+          0,
+          {"cache-control", @default_cache_control_header}
+        )
     end
   end