网站访问效率优化的一大方法,缓存(cache)。缓存针对动态网站起作用居多,动态网站的数据来源于数据库或者其他的存储容器。当请求页面的时候,我们需要首先查询数据,让后动态的渲染数据,当数据量大并且访问频繁的时候,容易导致响应效率变第,服务器压力变大。
所以,在第一次访问,就将数据库查询的数据先放到一个地方,这个地方可以是内存,数据库,本地当中,然后,之后访问同样的数据的时候,直接访问刚才存放的地方,而不是重新查询,那么这种技术就叫做缓存。
存储缓存常用的方式:
Memcache缓存:分布式的高速缓存系统,通常用来提高网站的访问速度。
在本地安装Memcache服务。
下载解压缓存包,在解压目录下,以管理员身份打开命令行。
memcached.exe -d install
安装django-memcache
pip install python-memcached
到global_settings当中复制cache配置结构到自己的settings当中进行配置。
settings配置
#cache需要有自己的配置,配置的结构,用global_settings里的配置
#D:\Anaconda\envs\DjangoPath\Lib\site-packages\django\conf
#本地缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',#默认本地缓存
}
}
# memcache缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',#声明使用memcache缓存
'LOCATION':[
'127.0.0.1:11211'
]#memcache
}
}
#Redis数据库缓存
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',#声明使用RedisCache缓存
'LOCATION':[
'redis://127.0.0.1:6379/1'
],#memcache地址
'OPTIONS':{
'CLIENT_CLASS':'django_redis.client.DefaultClient'
}
}
}
# sqlite数据库缓存
python manage.py createcachetable Tab_name #创建对应存放缓存的数据表
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION':'cache_table',#存放数据库的表
}
}
缓存使用的方式:
全栈粒度缓存
Django 全栈缓存通过缓存配置还有中间件来声明
首先配置settings的中间件,配置的位置必须一首一尾
CACHE_MIDDLEWARE_KEY_PREFIX = '' #同一个django下当多个网站共享缓存的时候,可以将该配置指向当前网站的识别,这个识别通常是域名,也可以是其他可以唯一标识该网站的字符,目的为了防止多个网站共享缓存,缓存混淆
CACHE_MIDDLEWARE_SECONDS = 600 #全局缓存的寿命
视图粒度缓存
路由粒度缓存
在开发过程当中,是否有可能使用不同的路由指向同一个视图。比如商品的上架和下架功能,不同的路由,指向同一个视图,这个时候就需要针对路由进行缓存
页面粒度缓存
底层缓存接口:
Set 设置cache
Get 获取 cache
Add 添加 cache