diff --git a/pretix_public_registrations/signals.py b/pretix_public_registrations/signals.py
index e19cc1769524a984010a4b4bfad9c6b6cd5188db..103227945803e7acfe097735fbb5a981f3d2e2f8 100644
--- a/pretix_public_registrations/signals.py
+++ b/pretix_public_registrations/signals.py
@@ -11,12 +11,16 @@ from pretix.base.models import OrderPosition
 
 @receiver(html_head, dispatch_uid="public_registrations_html_head")
 def add_public_registrations_html_head(sender, request=None, **kwargs):
-    url = resolve(request.path_info)
-    if "event.index" in url.url_name:
-        template = get_template("pretix_public_registrations/head.html")
-        return template.render()
-    else:
-        return ""
+    cached = sender.cache.get('public_registrations_html_head')
+    if cached is None:
+        url = resolve(request.path_info)
+        if "event.index" in url.url_name:
+            template = get_template("pretix_public_registrations/head.html")
+            cached = template.render()
+        else:
+            cached = ""
+        sender.cache.set('public_registrations_html_head', cached)
+    return cached
 
 
 @receiver(question_form_fields, dispatch_uid="public_registration_question")