您的位置:首页 > 编程语言 > Go语言

Django 缓存、信号

2017-02-07 11:39 274 查看

Reference: http://www.cnblogs.com/lianzhilei/p/6365877.html

缓存

  由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回
Django中提供了6种缓存方式:

开发调试

内存

文件

数据库

Memcache缓存(python-memcached模块、pylibmc模块)

1、配置

① 开发配置

文件
④ 数据库配置

数据库
⑤ Memcache缓存(python-memcached模块

python-memcached模块
⑥ Memcache缓存(pylibmc模块)

pylibmc模块
2、应用

① 全站使用

cache.html
配置文件:

settings.py
处理文件:

5、全局生效 

配置文件:

settings.py
其余文件都一致,全局优先级大;请求流程-->使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,如果不存在则接着往下走,执行views函数,最后经过UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存

信号

Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者

1、Django内置信号

内置信号调用方法:

内置信号调用

2、内置信号注册函数

对于内置的信号,使用时需要在信号中注册执行函数,当程序执行相应操作时,自动触发注册函数:

创建文件sg.py并注册函数:

__init__.py加载文件sg.py:

处理文件views.py:

打印

3、自定义信号

定义信号:

注册信号:

触发信号:

由于内置信号的触发者已经集成到Django中,所以其会自动调用,而对于自定义信号则需要开发者在任意位置触发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: