drf 缓存简介 未完

django的缓存简介

动态网站中,用户的请求需要对数据库进行操作,对服务端的资源消耗比较大,特别是在联多个表查询的时候。为了提高并发量,提高访问的速度,可以使用缓存

缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户。

这里只做简单的介绍,提供一些例子。以后做缓存会使用extensions,数据会放在redis

入门使用

前后端混合开发的项目中,Django提供了不同粒度的缓存,可以缓存某个页面,可以只缓存一个页面的某个部分,甚至可以缓存整个网站

配置缓存地址到文件

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',  # 指定缓存使用的引擎
        'LOCATION': 'G:django_cache',  # 指定缓存的路径
        'TIMEOUT': 300,  # 缓存超时时间(默认为300秒,None表示永不过期)
        'OPTIONS': {
            'MAX_ENTRIES': 300,  # 最大缓存记录的数量(默认300)
            'CULL_FREQUENCY': 3,  # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
        }
    }
}

全站缓存

中间件
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
。。。。
'django.middleware.cache.FetchFromCacheMiddleware',
]
# 在setting.py中的中间件配置
CACHE_MIDDLEWARE_SECONDS=10  # 全站缓存时间

单页面缓存

# 在视图函数上加装饰器
from django.views.decorators.cache import cache_page
@cache_page(5)  # 缓存5s钟
def test_cache(request):
    import time
    ctime=time.time()
    return render(request,'index.html',context={'ctime':ctime})

页面局部缓存

{% load cache %} 导入缓存
{% cache 5 'name' %}  # 5表示5s钟,name是唯一key值
{{ ctime }}
{% endcache %}

前后端分使用缓存

# views.py ...
from django.core.cache import cache
# 导入缓存模块
# 需要存的时候cache.set,需要取的时候cache.get
cache.set('key',value可以是任意数据类型)
cache.get('key')

未完,后续再更新

原文地址:https://www.cnblogs.com/telecasterfanclub/p/13307310.html