From b9a0859030e3bcdb14c94ec7efc1fc811ec3110d Mon Sep 17 00:00:00 2001 From: colaftc Date: Tue, 23 Dec 2025 16:25:51 +0800 Subject: [PATCH] feat: added cache to plate order list api --- api_v1/views/printing/views.py | 3 +++ flower/settings.py | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/api_v1/views/printing/views.py b/api_v1/views/printing/views.py index 4976d85..ab413c6 100644 --- a/api_v1/views/printing/views.py +++ b/api_v1/views/printing/views.py @@ -10,6 +10,8 @@ from rest_framework.permissions import DjangoModelPermissions from rest_framework.parsers import MultiPartParser, FormParser, JSONParser from django.db.models import CharField, Prefetch from django.db.models.functions import Cast, Coalesce +from django.views.decorators.cache import cache_page +from django.utils.decorators import method_decorator from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework as django_filters from django_filters import IsoDateTimeFilter @@ -80,6 +82,7 @@ class PrintingOrderFilterSet(django_filters.FilterSet): fields = ['customer', 'is_urgent', 'is_fabric_received', 'is_invalid'] +@method_decorator(cache_page(10), name='list') class PrintingOrderViewSet(viewsets.ModelViewSet): """ 印染订单 ViewSet diff --git a/flower/settings.py b/flower/settings.py index 838fec9..23b6163 100644 --- a/flower/settings.py +++ b/flower/settings.py @@ -201,6 +201,32 @@ DATABASES = { } +# Cache configuration +# https://docs.djangoproject.com/en/5.2/topics/cache/ +# Django 5.x 内置 Redis 缓存后端,使用 redis 包(已安装) +# 容器内默认使用 redis://redis:6379/0,本地开发可使用 redis://localhost:6379/0 +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.redis.RedisCache', + 'LOCATION': env( + 'CACHE_URL', + default='redis://redis:6379/0', # 容器内默认地址 + ), + 'OPTIONS': { + # Redis 连接选项 + 'socket_connect_timeout': 5, # 连接超时(秒) + 'socket_timeout': 5, # 操作超时(秒) + 'retry_on_timeout': True, # 超时后重试 + 'health_check_interval': 30, # 健康检查间隔(秒) + }, + # 键前缀,避免不同项目/环境之间的键冲突 + 'KEY_PREFIX': env('CACHE_KEY_PREFIX', default='flower'), + # 默认过期时间(秒),None 表示永不过期(由具体使用场景决定) + 'TIMEOUT': env.int('CACHE_DEFAULT_TIMEOUT', default=300), # 默认 5 分钟 + } +} + + # Password validation # https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators