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是如何判断缓存是否已经过期的。

posted @ 2021-03-08 15:13  X小白的逆袭之旅  阅读(87)  评论(0编辑  收藏  举报