Django自学笔记之缓存

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z564359805/article/details/90175266

设置缓存:

  • 通过设置决定把数据缓存在哪里,是数据库中、文件系统还是在内存中
  • 通过setting文件的CACHES配置来实现
  • 参数TIMEOUT:缓存的默认过期时间,以秒为单位,这个参数默认是300秒,即5分钟;设置TIMEOUT为None表示永远不会过期,值设置成0造成缓存立即失效

Django自带了一个健壮的缓存系统来保存动态页面(缓存到本地内存中):

CACHES={
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'TIMEOUT': 60,
    }
}

将cache存到redis中,默认采用1数据库,需要安装包并配置如下:

安装包:pip install django-redis-cache

settings.py中配置:

CACHES = {
    "default": {
        "BACKEND": "redis_cache.cache.RedisCache",
        "LOCATION": "localhost:6379",
        'TIMEOUT': 60,
    },
}

 views.py中:

from django.views.decorators.cache import cache_page
from django.core.cache import cache
import random


# 视图缓存练习 60秒过期时间
@cache_page(60)
def view_cache(request):
    # 视图缓存
    return HttpResponse('hello1')
    # return HttpResponse('hello2')

# 模板缓存练习
def template_cache(request):
    return render(request,'template_cache.html')

# 底层的缓存API
def cache_api(request):
    result = random.randrange(1,4)
    if result == 1:
        # 设置缓存
        cache.set('key1','value',60)
        print(result,cache.get('key1'))
        return render(request, 'template_cache.html')
    elif result == 2:
        # 清空缓存
        cache.clear()
        print(result)
        return HttpResponse('所有缓存已清理')
    else:
        if cache.get('key1'):
            # 删除指定的键key1
            cache.delete('key1')
            return HttpResponse('键key1缓存已清理')
        else:
            # 设置缓存
            cache.set('key1', 'value', 60)
            return HttpResponse('键key1已设置')

配置urls.py:

from django.urls import path
urlpatterns = [
    # 单个view缓存
    path('view_cache/', views.view_cache),
    # 视图缓存与URL无关,如果多个URL指向同一视图,每个URL将会分别缓存
    path('view_cache2/', views.view_cache),
    # 模板片断缓存
    path('template_cache/', views.template_cache),
    # 底层的缓存API
    path('cache_api/', views.cache_api),
    
]

templates新建template_cache.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% load cache %}
<!--缓存时间60秒-->
{% cache 60 hello %}

模板缓存hello
<!--模板缓存hello2-->

{% endcache %}

</body>
</html>

启动服务:

python manage.py runserver

输入网址分别查看:

http://127.0.0.1:8000/view_cache/

扫描二维码关注公众号,回复: 6233214 查看本文章

http://127.0.0.1:8000/view_cache2/

http://127.0.0.1:8000/template_cache/

http://127.0.0.1:8000/cache_api/

猜你喜欢

转载自blog.csdn.net/z564359805/article/details/90175266