在我的 Django 项目中,我想在服务器重新启动时停止清除缓存。例如,当我编辑我的 views.py 文件时,缓存被清除并且我被注销,这使得编辑任何登录用户独有的功能变得很痛苦。
settings.py
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
什么配置会在服务器刷新时停止缓存清除?
您可以切换到将数据持久保存到磁盘或远程缓存服务器的不同缓存后端。
例如,您可以使用“基于文件的”缓存后端,它将缓存数据存储在磁盘上。要配置此后端,请将以下内容添加到您的 settings.py 文件中:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
这将在 /var/tmp/django_cache 中创建一个缓存目录并将缓存数据存储在那里。缓存将在服务器重新启动后持续存在,因此您在编辑 views.py 文件时不会丢失缓存数据。
您可以使用持久缓存设置来保留缓存,例如内置的 FileBasedCache,这样您可以在服务器重新启动时保留它,例如:
django.core.cache.backends.filebased.FileBasedCache
另一个选择是使用另一个——不是内置的——缓存后端,比如 Redis。
使用 Redis 缓存。您将学习如何使用另一个很棒的工具。 尽管 Redis 通常将数据存储在内存中,但它也提供持久化选项以定期或在特定事件时将数据保存在磁盘上。在这种情况下,Redis 从持久化数据源加载数据。
您只需要安装 django-redis 包并在 settings.py 中配置缓存设置:
# settings.py
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
如果您在端口 6379(Redis 运行的典型端口)上运行 Redis,则默认缓存和会话存储都将存储在 Redis 中。