aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-05-16 11:56:10 +0200
committerChristian Grothoff <christian@grothoff.org>2022-05-16 11:56:10 +0200
commit3db8f0f22d0a7c1710b4c4f9097103b124c58971 (patch)
treee2df57484740dc13d63007dc41b9ad23b0fcb680
parentfac01f140fbbb5c95bd090ad1cdfee3d89f056ba (diff)
improve cache control support for /wire, /keys and legal
-rw-r--r--src/exchange/taler-exchange-httpd_keys.c10
-rw-r--r--src/exchange/taler-exchange-httpd_wire.c11
-rw-r--r--src/mhd/mhd_legal.c13
3 files changed, 33 insertions, 1 deletions
diff --git a/src/exchange/taler-exchange-httpd_keys.c b/src/exchange/taler-exchange-httpd_keys.c
index a84849099..dea29f7d0 100644
--- a/src/exchange/taler-exchange-httpd_keys.c
+++ b/src/exchange/taler-exchange-httpd_keys.c
@@ -1703,6 +1703,16 @@ setup_general_response_headers (struct TEH_KeyStateHandle *ksh,
= GNUNET_TIME_timestamp_min (m,
ksh->signature_expires);
}
+ /* Set cache control headers: our response varies depending on these headers */
+ GNUNET_break (MHD_YES ==
+ MHD_add_response_header (response,
+ MHD_HTTP_HEADER_VARY,
+ MHD_HTTP_HEADER_ACCEPT_ENCODING));
+ /* Information is always public, revalidate after 1 hour */
+ GNUNET_break (MHD_YES ==
+ MHD_add_response_header (response,
+ MHD_HTTP_HEADER_CACHE_CONTROL,
+ "public,max-age=3600"));
return GNUNET_OK;
}
diff --git a/src/exchange/taler-exchange-httpd_wire.c b/src/exchange/taler-exchange-httpd_wire.c
index e2baa1ce7..aa187c1cf 100644
--- a/src/exchange/taler-exchange-httpd_wire.c
+++ b/src/exchange/taler-exchange-httpd_wire.c
@@ -483,6 +483,17 @@ build_wire_state (void)
wsh->dat));
}
TALER_MHD_add_global_headers (wsh->wire_reply);
+ /* Set cache control headers: our response varies depending on these headers */
+ GNUNET_break (MHD_YES ==
+ MHD_add_response_header (wsh->wire_reply,
+ MHD_HTTP_HEADER_VARY,
+ MHD_HTTP_HEADER_ACCEPT_ENCODING));
+ /* Information is always public, revalidate after 1 day */
+ GNUNET_break (MHD_YES ==
+ MHD_add_response_header (wsh->wire_reply,
+ MHD_HTTP_HEADER_CACHE_CONTROL,
+ "public,max-age=86400"));
+
{
struct GNUNET_HashCode h;
char etag[sizeof (h) * 2];
diff --git a/src/mhd/mhd_legal.c b/src/mhd/mhd_legal.c
index bd596862c..5082c1811 100644
--- a/src/mhd/mhd_legal.c
+++ b/src/mhd/mhd_legal.c
@@ -306,7 +306,18 @@ TALER_MHD_reply_legal (struct MHD_Connection *conn,
MHD_add_response_header (resp,
MHD_HTTP_HEADER_EXPIRES,
dat));
-
+ /* Set cache control headers: our response varies depending on these headers */
+ GNUNET_break (MHD_YES ==
+ MHD_add_response_header (resp,
+ MHD_HTTP_HEADER_VARY,
+ MHD_HTTP_HEADER_ACCEPT_LANGUAGE ","
+ MHD_HTTP_HEADER_ACCEPT ","
+ MHD_HTTP_HEADER_ACCEPT_ENCODING));
+ /* Information is always public, revalidate after 10 days */
+ GNUNET_break (MHD_YES ==
+ MHD_add_response_header (resp,
+ MHD_HTTP_HEADER_CACHE_CONTROL,
+ "public max-age=864000"));
if (NULL != legal)
GNUNET_break (MHD_YES ==
MHD_add_response_header (resp,