Django缓存

缓存针对动态网站起作用居多,动态网站的数据来源于数据库或者其他的存储容器。在第一次访问,就将数据库查询的数据先放到一个地方,这个地方可以是内存,数据库,本地当中,然后,之后访问同样的数据的时候,直接访问刚才发存放的地方,而不是重新查询,那么这种技术就叫做缓存。
存储缓存常用的方式:
Memcache缓存:
分布式的高速缓存系统,通常用来提高网站的访问速度。
在本地安装Memcache服务。
下载解压缓存包,在解压目录下,以管理员身份打开命令行。
Memcached.exe -d install
在这里插入图片描述
打开Memcached服务
安装django-memcache
pip install python-memcached
到global_settings当中复制cache配置结构到自己的settings当中进行配置。
1、memcached缓存

    CACHE={
    	'default':{
    				    'BACKEND':'django.core.cache.backends.memcached.MemcacheCache',#申明使用memcache进行缓存
    		‘LOCATION’:[
    		'127.0.0.1:11211'
    		]#memcache地址
    		}}

2、本地缓存

CACHES={
    'default':{
        'BACKEND':'django.core.cache.backends.locmem.LocMemCache'
        #默认使用本地缓存
    }

3、数据库缓存
redis数据库缓存
pip install django-redis
pip install redis
启动redis

CACHES={
    'default':{
        'BACKEND':'django_redis.cache.RedisCache',
        'LOCATION':[
            'redis://127.0.0.1:6379/1'
        ],#memcacha地址
        'OPTIONS':{
            'CLIENT_CLASS':'django_redis.client.DefaultClient'
        }
    }
}

mysql缓存
#创建对应存放缓存的数据表
设置数据库配置
python manage.py createcachetable cache_table

CACHES={
    'default':{
        'BACKEND':'django.core.cache.backends.db.DatabaseCache',
        #默认使用数据库缓存
        'LOCATION':'cache_table'#存放缓存的表
    }
}

缓存使用的方式:
1、全栈粒度缓存
Django全栈缓存通过缓存配置还有中间件来声明
首先配置settings的中间件,配置的位置必须一首一尾
settings当中配置

CACHE_MIDDLEWAREWARE_KEY_PREFIX=''"
CACHE_MIDDLEWARE_SECONDS=600
CACHE_MIDDLEWAREWARE_KEY_PREFIX=''"

2、视图缓存

from  django.views.decorators.cache import cache_page
from django.core.cache import cache
@cache_page(60*15)
def small_white_views(request):
    print("我是小白视图")
    #raise TypeError("我就不想好好的")
    return HttpResponse("我是小白视图")

3、Memcache路由缓存
在开发过程当中,是否有可能使用不同的路由指向同一个视图,,比如商品的上架、下架功能,不同的路由,指向同一个视图,这个时候就需要针对路由进行缓存

path('swv',cache_page(60*15)(small_white_views)),

4、底层缓存
底层缓存接口
set设置caache
get获取cache
add添加cache

from django.core.cache import cache
def small_white_views(request):
    store_data=cache.get("store_data")#如果没有返回None
    if store_data:
        store_data=store_data
    else:
        data=Store.objects.all()
        cache.set("store_data",data,30)
        cache.add("store_data", data, 30)#add只会添加一个缓存,不会修改已有的缓存
        store_data=data
        return render(request,"store/index.html",locals())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值