美文网首页我爱编程
浅谈Django优化

浅谈Django优化

作者: Bili_bo | 来源:发表于2018-08-09 15:23 被阅读0次

一:Django的QuerySets对象是有缓存的,一旦取出来,它就会在内存中存储一段时间,尽量重用它。

user = UserProfile.objects.get(id=1)

user.phone #第一次取出来使用,是要对数据库进行访问

user.username #第二次再用,就是缓存中的实体了,不需要再访问数据库

注意如果使用all函数,则每一次都会请求访问数据库

二:能去redis等等缓存中获取到数据就可以别连接到数据库去处理结果

三:使用QuerySets的迭代器功能,先缓存起来,避免占用太多内存

四:避免all,使用filter过滤筛选数据

五:单一动作需要多次连接数据库时,最好一次性取出所有需要的数据,减少连接数据库次数。

六:Django中的查询是惰性的。这意味着在你真正需要获取数据之前它不会访问数据库。同时,它只获取你指定的数据,如果需要其他附加数据,则要另外发出请求。为了提取所有需要的数据,可以在查询集上使用select_related()

七:默认情况下,Django会从数据库中提取所有字段。defer()only()这两个查询方法来改进。第一个用于指定哪些字段不要加载,第二个用于指定只加载哪些字段。

八:如果像我一样采取的是Django-rest框架,那么我们可以自定义序列化层,这几乎可以缩短一半的时间

九:第三方扩展应用可能会花费时间,我们可以更新三方应用,或者自己造轮子来减少response时间

十:应用层设置缓存,数据库用redis作为数据库缓存的中间件

十一:在部署环境下,加载模版使用缓存,设置数据库持久化连接

相关文章

网友评论

    本文标题:浅谈Django优化

    本文链接:https://www.haomeiwen.com/subject/kktcbftx.html