Improve cacheability
This commit is contained in:
parent
e0053b69de
commit
69f1b3168a
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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 = ""
|
||||||
|
@ -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:
|
||||||
|
@ -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",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user