diff --git a/bookwyrm/templates/snippets/status/layout.html b/bookwyrm/templates/snippets/status/layout.html
index 174c379f..5cbcef20 100644
--- a/bookwyrm/templates/snippets/status/layout.html
+++ b/bookwyrm/templates/snippets/status/layout.html
@@ -1,7 +1,6 @@
 {% extends 'components/card.html' %}
 {% load i18n %}
 {% load utilities %}
-{% load cache %}
 
 {% block card-header %}
 
     {% endif %}
-    {% endcache %}
 
 {% else %}
 
diff --git a/bookwyrm/templates/snippets/status/status_options.html b/bookwyrm/templates/snippets/status/status_options.html
index 854d4779..fdf8ac14 100644
--- a/bookwyrm/templates/snippets/status/status_options.html
+++ b/bookwyrm/templates/snippets/status/status_options.html
@@ -20,17 +20,21 @@
 
 {% if status.status_type != 'GeneratedNote' and status.status_type != 'Rating' %}
 
-    
-        {% trans "Edit" %}
-    
+    
+        
+            {% trans "Edit" %}
+        
+    
 
 {% endif %}
 {% else %}
 {# things you can do to other people's statuses #}
 
-    
-        {% trans "Send direct message" %}
-    
+    
+        
+            {% trans "Send direct message" %}
+        
+    
 
 
     {% include 'snippets/report_button.html' with user=status.user status=status %}
diff --git a/bookwyrm/templatetags/interaction.py b/bookwyrm/templatetags/interaction.py
index 64c91f89..90309aaf 100644
--- a/bookwyrm/templatetags/interaction.py
+++ b/bookwyrm/templatetags/interaction.py
@@ -1,5 +1,7 @@
 """ template filters for status interaction buttons """
 from django import template
+from django.core.cache import cache
+
 from bookwyrm import models
 
 
@@ -9,13 +11,21 @@ register = template.Library()
 @register.filter(name="liked")
 def get_user_liked(user, status):
     """did the given user fav a status?"""
-    return models.Favorite.objects.filter(user=user, status=status).exists()
+    return cache.get_or_set(
+        f"fav-{user.id}-{status.id}",
+        models.Favorite.objects.filter(user=user, status=status).exists(),
+        259200,
+    )
 
 
 @register.filter(name="boosted")
 def get_user_boosted(user, status):
     """did the given user fav a status?"""
-    return status.boosters.filter(user=user).exists()
+    return cache.get_or_set(
+        f"boost-{user.id}-{status.id}",
+        status.boosters.filter(user=user).exists(),
+        259200,
+    )
 
 
 @register.filter(name="saved")
diff --git a/bookwyrm/views/interaction.py b/bookwyrm/views/interaction.py
index 9e897beb..f59271bd 100644
--- a/bookwyrm/views/interaction.py
+++ b/bookwyrm/views/interaction.py
@@ -1,7 +1,6 @@
 """ boosts and favs """
 from django.contrib.auth.decorators import login_required
 from django.core.cache import cache
-from django.core.cache.utils import make_template_fragment_key
 from django.db import IntegrityError
 from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotFound
 from django.shortcuts import redirect
@@ -19,7 +18,7 @@ class Favorite(View):
 
     def post(self, request, status_id):
         """create a like"""
-        clear_cache(request.user.id, status_id)
+        cache.delete(f"fav-{request.user.id}-{status_id}")
         status = models.Status.objects.get(id=status_id)
         try:
             models.Favorite.objects.create(status=status, user=request.user)
@@ -38,6 +37,7 @@ class Unfavorite(View):
 
     def post(self, request, status_id):
         """unlike a status"""
+        cache.delete(f"fav-{request.user.id}-{status_id}")
         status = models.Status.objects.get(id=status_id)
         try:
             favorite = models.Favorite.objects.get(status=status, user=request.user)
@@ -46,7 +46,6 @@ class Unfavorite(View):
             return HttpResponseNotFound()
 
         favorite.delete()
-        clear_cache(request.user.id, status_id)
         if is_api_request(request):
             return HttpResponse()
         return redirect(request.headers.get("Referer", "/"))
@@ -58,6 +57,7 @@ class Boost(View):
 
     def post(self, request, status_id):
         """boost a status"""
+        cache.delete(f"boost-{request.user.id}-{status_id}")
         status = models.Status.objects.get(id=status_id)
         # is it boostable?
         if not status.boostable:
@@ -74,7 +74,6 @@ class Boost(View):
             privacy=status.privacy,
             user=request.user,
         )
-        clear_cache(request.user.id, status_id)
         if is_api_request(request):
             return HttpResponse()
         return redirect(request.headers.get("Referer", "/"))
@@ -86,19 +85,13 @@ class Unboost(View):
 
     def post(self, request, status_id):
         """boost a status"""
+        cache.delete(f"boost-{request.user.id}-{status_id}")
         status = models.Status.objects.get(id=status_id)
         boost = models.Boost.objects.filter(
             boosted_status=status, user=request.user
         ).first()
 
         boost.delete()
-        clear_cache(request.user.id, status_id)
         if is_api_request(request):
             return HttpResponse()
         return redirect(request.headers.get("Referer", "/"))
-
-
-def clear_cache(user_id, status_id):
-    """clear template cache"""
-    cache_key = make_template_fragment_key("interact", [user_id, status_id])
-    cache.delete(cache_key)