django缓存
Django缓存设置
Django中提供了多种缓存方式,如果要使用缓存,需要先在settings.py中进行配置,然后应用。根据缓存介质的不同,你需要设置不同的缓存后台Backend。
Memcached缓存
Memcached是基于内存的缓存,Django原生支持的最快最有效的缓存系统。对于大多数场景,我们推荐使用Memcached,数据缓存在服务器端。使用前需要通过pip安装memcached的插件python-memcached和pylibmc,可以同时支持多个服务器上面的memcached。
下面是使用pyhon-memcached的设置。
# localhost CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } # unix soket CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'unix:/tmp/memcached.sock', } } CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', '172.19.26.242:11211', ] # 我们也可以给缓存机器加权重,权重高的承担更多的请求,如下 'LOCATION': [ ('172.19.26.240:11211',5), ('172.19.26.242:11211',1), ] } }
数据库缓存
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'my_cache_table', }
文件系统缓存
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': '/var/tmp/django_cache',#这个是文件夹的路径 #'LOCATION': 'c:\foo\bar',#windows下的示例 } }
本地内存缓存
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'unique-snowflake' } }
Django代码中如何使用Cache
当你做好Cache的设置后,在代码中你可以有三种方式使用Cache。
1.在视图View中使用
2.在路由URLConf中使用
3.在模板中使用
在视图View中使用cache
from django.views.decorators.cache import cache_page @cache_page(60 * 15) def my_view(request): ...
在路由URLConf中使用cache
这是我更喜欢的方式,这样你就不用修改负责逻辑部分的view了。
from django.views.decorators.cache import cache_page urlpatterns = [ path('foo/<int:code>/', cache_page(60 * 15)(my_view)), ]
在模板中使用cache
{% load cache %} {% cache 500 sidebar request.user.username %} .. sidebar for logged in user .. {% endcache %}
对于大部分码农而言,我们只需要懂得如何在django中使用cache即可,而不需要详细了解django后台工作原理,比如Django是如何将数据存储到选定介质的以及django是如何判断缓存是否已经过期的。