这个存储库的灵感来自:django-rest-framework-cache
实现了自动发现序列化器相关模型(通过bfs
算法),并清除被更改的序列化器缓存的功能。
还未进行 pip 打包。
将 drf_serializer_data_cache
添加至 INSTALLED_APPS
中.
INSTALLED_APPS = (
...
'drf_serializer_data_cache',
)
只需要让你的ModelSerializer
继承自SerializerCacheMixin
(提示:遵循mro
原则,SerializerCacheMixin
必须在左边)。
from rest_framework import serializers
from drf_serializer_data_cache.mixins import SerializerCacheMixin
class YourModelSerializer(SerializerCacheMixin, serializers.ModelSerializer):
pass
要使缓存成功工作,您必须设置 Django CACHES
。
建议您在此处查看 Django 缓存文档: https://docs.djangoproject.com/en/stable/topics/cache/#setting-up-the-cache
如果您需要使用非默认的缓存后端,您可以在 SERIALIZER_CACHE_BACKEND
中指定它。
在settings.py
中设置,如下:
# ...
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379',
},
'local_memory': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
}
}
REST_FRAMEWORK_CACHE = {
'SERIALIZER_CACHE_BACKEND': 'local_memory',
}
# ...
你可以设置SERIALIZER_CACHE_TIMEOUT
,来设定缓存过期的时间。
REST_FRAMEWORK_CACHE = {
'SERIALIZER_CACHE_TIMEOUT': 86400, # 默认为一天
}
默认设置下,这个库将自动发现序列化器的相关模型,并通过signal
进行调度。
当与ModelSerializer
关联的模型实例发生变化时,将自动清除对应的序列化器缓存。
你可以通过AUTO_DELETE_RELATED_CACHES
进行设置。
REST_FRAMEWORK_CACHE = {
'AUTO_DELETE_RELATED_CACHES': False # 默认是打开的(True)
}