def select_related(self, *fields):
性能相关: 表之间进行join 连表操作, 一次性获取关联的数据。
总结:
1. select_related 主要针对一对一 和 多对一关系进行优化。
2. select_related 使用 SQL的join 语句进行优化, 通过减少SQ语句的查询的次数来进行优化, 提高性能。
def prefetch_related(self, *lookups):
性能相关: 多表连表操作时速度会慢,使用其执行多次SQL 查询在Python 代码中实现连表操作。
总结:
1. 对于多对多字段 (ManyToManyField) 和 一对多字段,可以使用prefetch_related() 进行优化。
2. prefetch_related() 的优化方式是分贝查询内阁表,然后用Python 处理他们之间的关系。
uWSGI 和nginx 的理解
- uWSGI 是一个Web 服务器,它实现了WSGI 协议,uwsgi、http 等协议。Nginx 中HttpUwsgiModule 的作用是与uWSGI 服务器进行交换。WSGI 是一种Web 服务器网关接口。它是一个Web 服务器 (如nginx、uWSGI等服务器) 与web 应用 (如用Flask 框架写的程序) 通信的一种规范。
- 要注意WSGI/uwsgi / uWSGI 这三个概念的区分。
WSGI 是一种通讯协议。
uwsgi 是一种线路协议而不是通讯协议,在此长用于uWSGI 服务器与其他网络服务器的数据通信。
uWSGI 是实现了uwsgi 和WSGI 两种协议的Web 服务器。
nginx 是一个开源的高性能的HTTP 服务器和反向代理
- 作为web 服务器, 它处理静态文件和索引文件效果非常高;
- 它的设计非常注重效率, 最大支持5 万个并发连接, 但只占用很少的内存空间;
- 稳定性高,配置简洁
- 强大的反向代理和负载均衡功能, 平衡集群中各个服务器的负载压力应用。
Django 请求的声明周期
- 当用户在浏览器中输入url , 浏览器会生成请求头和请求体发给服务端。
请求头和请求体中会包含浏览器的动作(action), 这个动作通常为get 或者 post , 体现在url 中 。- url 经过Django 中的wsgi, 再经过Django的中间件, 最后url 到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了。
3.视图函数根据客户端的请求查询相应的数据, 返回给Django , 然后Django 把客户端想要的数据作为一个字符串返回给客户端。- 客户端浏览器接收到返回的数据, 经过渲染后显示给用户。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77037.html