mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-26 19:41:11 +00:00
Cache book_titleby only for 10 seconds
This should be enough caching when renderering pages like the feed, but not so much that editing a book or author will not show the updated data. At least without having to do some clever cache busting.
This commit is contained in:
parent
5ea922a551
commit
3e25b04e4a
3 changed files with 2 additions and 18 deletions
|
@ -1,8 +1,6 @@
|
||||||
""" database schema for info about authors """
|
""" database schema for info about authors """
|
||||||
import re
|
import re
|
||||||
from django.contrib.postgres.indexes import GinIndex
|
from django.contrib.postgres.indexes import GinIndex
|
||||||
from django.core.cache import cache
|
|
||||||
from django.core.cache.utils import make_template_fragment_key
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
from bookwyrm import activitypub
|
from bookwyrm import activitypub
|
||||||
|
@ -37,16 +35,7 @@ class Author(BookDataModel):
|
||||||
bio = fields.HtmlField(null=True, blank=True)
|
bio = fields.HtmlField(null=True, blank=True)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
"""clear related template caches"""
|
"""normalize isni format"""
|
||||||
# clear template caches
|
|
||||||
if self.id:
|
|
||||||
cache_keys = [
|
|
||||||
make_template_fragment_key("titleby", [book])
|
|
||||||
for book in self.book_set.values_list("id", flat=True)
|
|
||||||
]
|
|
||||||
cache.delete_many(cache_keys)
|
|
||||||
|
|
||||||
# normalize isni format
|
|
||||||
if self.isni:
|
if self.isni:
|
||||||
self.isni = re.sub(r"\s", "", self.isni)
|
self.isni = re.sub(r"\s", "", self.isni)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import re
|
||||||
from django.contrib.postgres.search import SearchVectorField
|
from django.contrib.postgres.search import SearchVectorField
|
||||||
from django.contrib.postgres.indexes import GinIndex
|
from django.contrib.postgres.indexes import GinIndex
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.core.cache.utils import make_template_fragment_key
|
|
||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.db.models import Prefetch
|
from django.db.models import Prefetch
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
@ -208,10 +207,6 @@ class Book(BookDataModel):
|
||||||
if not isinstance(self, Edition) and not isinstance(self, Work):
|
if not isinstance(self, Edition) and not isinstance(self, Work):
|
||||||
raise ValueError("Books should be added as Editions or Works")
|
raise ValueError("Books should be added as Editions or Works")
|
||||||
|
|
||||||
# clear template caches
|
|
||||||
cache_key = make_template_fragment_key("titleby", [self.id])
|
|
||||||
cache.delete(cache_key)
|
|
||||||
|
|
||||||
return super().save(*args, **kwargs)
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
def get_remote_id(self):
|
def get_remote_id(self):
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
{% get_current_language as LANGUAGE_CODE %}
|
{% get_current_language as LANGUAGE_CODE %}
|
||||||
{# 6 month cache #}
|
{# 6 month cache #}
|
||||||
{% cache 15552000 titleby LANGUAGE_CODE book.id %}
|
{% cache 10 titleby LANGUAGE_CODE book.id %}
|
||||||
|
|
||||||
{% if book.authors.exists %}
|
{% if book.authors.exists %}
|
||||||
{% blocktrans trimmed with path=book.local_path title=book|book_title %}
|
{% blocktrans trimmed with path=book.local_path title=book|book_title %}
|
||||||
|
|
Loading…
Reference in a new issue