Improve cacheability

This commit is contained in:
Andrew Godwin 2022-12-15 00:35:04 -07:00
parent e0053b69de
commit 69f1b3168a
5 changed files with 17 additions and 8 deletions

View file

@ -6,9 +6,9 @@ from core import sentry
from core.models import Config
class AcceptMiddleware:
class HeadersMiddleware:
"""
Detects any Accept headers signifying a fellow AP server is trying to get JSON.
Deals with Accept request headers, and Cache-Control response ones.
"""
def __init__(self, get_response):
@ -22,6 +22,8 @@ class AcceptMiddleware:
or "application/activity" in accept
)
response = self.get_response(request)
if "Cache-Control" not in response.headers:
response.headers["Cache-Control"] = "private, max-age=0"
return response

View file

@ -5,10 +5,10 @@ import pydantic
from asgiref.sync import sync_to_async
from django.core.files import File
from django.db import models
from django.templatetags.static import static
from django.utils.functional import lazy
from core.uploads import upload_namer
from core.uris import StaticAbsoluteUrl
from takahe import __version__
@ -201,8 +201,10 @@ class Config(models.Model):
site_name: str = "Takahē"
highlight_color: str = "#449c8c"
site_about: str = "<h2>Welcome!</h2>\n\nThis is a community running Takahē."
site_icon: UploadedImage = static("img/icon-128.png")
site_banner: UploadedImage = static("img/fjords-banner-600.jpg")
site_icon: UploadedImage = StaticAbsoluteUrl("img/icon-128.png").relative # type: ignore
site_banner: UploadedImage = StaticAbsoluteUrl(
"img/fjords-banner-600.jpg"
).relative # type: ignore
policy_terms: str = ""
policy_privacy: str = ""

View file

@ -1,7 +1,7 @@
from urllib.parse import urljoin
from django.conf import settings
from django.templatetags.static import static
from django.contrib.staticfiles.storage import staticfiles_storage
class RelativeAbsoluteUrl:
@ -41,7 +41,7 @@ class StaticAbsoluteUrl(RelativeAbsoluteUrl):
"""
def __init__(self, path: str):
static_url = static(path)
static_url = staticfiles_storage.url(path)
if "://" in static_url:
super().__init__(static_url)
else:

View file

@ -49,6 +49,7 @@ class BaseCacheView(View):
cached_content["content"],
headers={
"Content-Type": cached_content["mimetype"],
"Cache-Control": "public, max-age=3600",
},
)

View file

@ -190,7 +190,7 @@ MIDDLEWARE = [
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"django_htmx.middleware.HtmxMiddleware",
"core.middleware.AcceptMiddleware",
"core.middleware.HeadersMiddleware",
"core.middleware.ConfigLoadingMiddleware",
"api.middleware.ApiTokenMiddleware",
"users.middleware.IdentityMiddleware",
@ -274,6 +274,10 @@ STATICFILES_FINDERS = [
STATICFILES_DIRS = [BASE_DIR / "static"]
STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
WHITENOISE_MAX_AGE = 3600
STATIC_ROOT = BASE_DIR / "static-collected"
ALLOWED_HOSTS = SETUP.ALLOWED_HOSTS