缓存针对动态网站起作用居多,动态网站的数据来源于数据库或者其他的存储容器。在第一次访问,就将数据库查询的数据先放到一个地方,这个地方可以是内存,数据库,本地当中,然后,之后访问同样的数据的时候,直接访问刚才发存放的地方,而不是重新查询,那么这种技术就叫做缓存。
存储缓存常用的方式:
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())