Django中的缓存框架 --- 提高web的访问效率

1、官网查看资料

https://docs.djangoproject.com/en/2.1/topics/cache/

2、django缓存框架的特点

1、尽可能少的代码
2、尽可能的快
3、一致性:不同的数据存储方式,提供一致的借口(api)来访问
4、扩展性:可以介入外部的存储方式

3、可以使用的缓存方式

1、可以使用Memcached作为缓存 -- 内容,分布式,老(新的reids(默认不支持))
2、可以使用数据库进行缓存 -- 数据量大,效率低
3、可以使用文件缓存 -- 使用不方便,效率低
4、使用本地内存进行缓存
5、可以接入其他存储方式 -- redis  内存,效率高

4、数据库缓存的使用

1、在setting中配置缓存数据库

CACHES = {
		    'default': {
			'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
			'LOCATION': 'my_cache_table',
		    }
		}
		
LOCATION用来指定缓存数据库表的名字

2、执行命令

python manager.py  createcachetable
会自动的数据库创建缓存表

3、使用:

直接在需要缓存的视图函数上加上装饰器即可:
如:@cache_page(60)
django会自动缓存该视图函数对应的html,()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据 
多个url指向同一视图函数:
	每个视图缓存(如每个站点缓存)都是从URL键入的。如果多个URL指向同一视图,则每个URL将单独缓存。

5、自定义缓存

def testCache(request):

    # 判断缓存中是否有数据
    # 从缓存中取数据,获取到缓存内容
    cacheTest = cache.get('testCahce')
    if cacheTest: # 有数据--直接响应
        return HttpResponse(cacheTest)
    else: # 没有数据,加载并存储到缓存中
        time.sleep(3) # 假装到数据库取数据
        tem = loader.get_template('testCache.html')

        strHtml = tem.render()
        # 保存到缓存中去
        cache.set('testCahce',strHtml,60)

        return HttpResponse(strHtml)

6、cache 缓存操作

1.包 : from django.core.cache import cache
2.操作:
	    存: cache.set(key,value,缓存时间)
	    取: cache.get(key)

	    add  添加
	    get_or_set 如果有对应的值表示获取,没有就设置
	    get_many 获取多个
	    set_many  设置多个值
	    delete  删除
	    delete_many  删除多个
	    clear  清除
	    touch 设置有效时间

7、使用redis数据库作为缓存数据库 – 快

1、资料

http://django-redis-chs.readthedocs.io/zh_CN/latest/#django

2、使用:

1、安装对应的模块

pip install django-redis

2、在setting中配置

CACHES = {
			    "default": {
				"BACKEND": "django_redis.cache.RedisCache",
				"LOCATION": "redis://127.0.0.1:6379/1",
				"OPTIONS": {
				    "CLIENT_CLASS": "django_redis.client.DefaultClient",
				}
			    }
			}

3、使用redis缓存

与上面数据库缓存一样的用法
直接在需要的视图函数上加上装饰器即可:
如: @cache_page(60)
django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据 

4、注意

使用redis存储,需要启动redis服务,否则会报数据链接错误
启动redis:
	在安装目录下的src目录下
	输入命令:sudo ./redis-server

5、在redis中查询缓存数据

启动redis的客户端
在安装目录下的src目录下
	输入命令:sudo ./redis-cli
	select 1 切换库
	keys * 查看所有
	get key  获取某个值

8、缓存数据库的配置

常用配置:
	TIMEOUT:用于缓存的默认超时(以秒为单位)。此参数默认为300秒(5分钟)。您可以设置TIMEOUT为None默认情况下缓存键永不过期。值0使得键立即过期(实际上“不缓存”)。
	OPTIONS中--- MAX_ENTRIES:删除旧值之前缓存中允许的最大条目数。此参数默认为300。

猜你喜欢

转载自blog.csdn.net/EverXerxes/article/details/82778175
今日推荐