优秀ppt模板免费下载,手机优化师下载,学做ppt的网站 免费下载,人性本私wordpress文章目录 一、什么是缓存二、Django中的6种缓存方式三、Django缓存的配置内存缓存(默认情况下就是缓存到内存中)文件缓存(把缓存数据存储在文件中)数据库缓存(把缓存数据存储在数据库中) 四、Django中的缓存应用(三种粒度)全站缓存(利用Django中间件)视图函数缓存局部缓存 一、… 文章目录 一、什么是缓存二、Django中的6种缓存方式三、Django缓存的配置内存缓存(默认情况下就是缓存到内存中)文件缓存(把缓存数据存储在文件中)数据库缓存(把缓存数据存储在数据库中) 四、Django中的缓存应用(三种粒度)全站缓存(利用Django中间件)视图函数缓存局部缓存 一、什么是缓存 简单概括就是将对数据库操作查询所得到的数据放入另外一台机器上(缓存)中 当用户再次请求时直接去缓存中拿避免对数据库的频繁操作加快数据的显示时间需要知道的是缓存里面的数据一般都设置有超时时间缓存一般用在数据变化不大实时率不高的情况下。 由于Django是动态网站所有每次请求均会去数据进行相应的操作 当程序访问量大时耗时必然会更加明显最简单解决方式是使用缓存缓存将一个某个views的返回值保存至内存或者memcache中 5分钟内(默认配置)再有人来访问时则不再去执行view中的操作而是直接从内存或者Redis中之前缓存的内容拿到并返回。 二、Django中的6种缓存方式
内存缓存文件缓存数据库缓存Memcache缓存(使用python-memcached模块)Memcache缓存(使用pylibmc模块)redis缓存
经常使用到的有文件缓存以及redis缓存 三、Django缓存的配置
这里就只写文件缓存、内存缓存和数据库缓存配置了其他想要了解可以自行查找
内存缓存(默认情况下就是缓存到内存中)
settings.py配置文件中 CACHES {default: {BACKEND: django.core.cache.backends.locmem.LocMemCache, # 指定缓存使用的引擎LOCATION: unique-snowflake, # 写在内存中的变量的唯一值 TIMEOUT:300, # 缓存超时时间(默认为300秒,None表示永不过期)OPTIONS:{MAX_ENTRIES: 300, # 最大缓存记录的数量默认300CULL_FREQUENCY: 3, # 缓存到达最大个数之后剔除缓存个数的比例即1/CULL_FREQUENCY默认3} }}文件缓存(把缓存数据存储在文件中)
settings.py配置文件中 CACHES {default: {BACKEND: django.core.cache.backends.filebased.FileBasedCache, #指定缓存使用的引擎LOCATION: /var/tmp/django_cache, #指定缓存的路径TIMEOUT:300, #缓存超时时间(默认为300秒,None表示永不过期)OPTIONS:{MAX_ENTRIES: 300, # 最大缓存记录的数量默认300CULL_FREQUENCY: 3, # 缓存到达最大个数之后剔除缓存个数的比例即1/CULL_FREQUENCY默认3}} }数据库缓存(把缓存数据存储在数据库中)
settings.py配置文件中 CACHES {default: {BACKEND: django.core.cache.backends.db.DatabaseCache, # 指定缓存使用的引擎LOCATION: cache_table, # 数据库表 OPTIONS:{MAX_ENTRIES: 300, # 最大缓存记录的数量默认300CULL_FREQUENCY: 3, # 缓存到达最大个数之后剔除缓存个数的比例即1/CULL_FREQUENCY默认3} } }注意,创建缓存的数据库表使用的语句: python manage.py createcachetable四、Django中的缓存应用(三种粒度)
全站缓存(利用Django中间件)
既然是全站缓存,当然要使用Django中的中间件 用户的请求通过中间件,经过一系列的认证等操作,如果请求的内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户。当返回给用户之前,判断缓存中是否已经存在,如果不存在,则UpdateCacheMiddleware会将缓存保存至Django的缓存之中,以实现全站缓存 缓存整个站点是最简单的缓存方法需要在settings配置文件中的中间件中加入 “update放在最前面” 和 “fetch放在最后面” 中间件MIDDLEWARE [django.middleware.cache.UpdateCacheMiddleware,........django.middleware.cache.FetchFromCacheMiddleware] “update” 必须配置在第一个位置“fetch” 必须配置在最后一个位置视图函数缓存 import datetimefrom django.views.decorators.cache import cache_page 导入缓存装饰器模块cache_page(timeout10) 装饰器def demo2(request):ctime datetime.datetime.now()return render(request,demo2.html,{ctime:ctime})局部缓存 放在模版层使用的{% load cache %}h3 stylecolor: green不缓存:-----{{ ctime }}/h3{% cache 2 name %}h3缓存:-----:{{ ctime }}/h3{% endcache %}