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 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): def __init__(self, get_response):
@ -22,6 +22,8 @@ class AcceptMiddleware:
or "application/activity" in accept or "application/activity" in accept
) )
response = self.get_response(request) response = self.get_response(request)
if "Cache-Control" not in response.headers:
response.headers["Cache-Control"] = "private, max-age=0"
return response return response

View file

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

View file

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

View file

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

View file

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