浅谈Django优化

一: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作为数据库缓存的中间件

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,003评论 2 89
  • Web框架之Django: (1)简介: Django是一个由Python写成开源的重量级Web应用框架,采用MT...
    老肖阅读 3,075评论 0 18
  • 小美在这座城市出生读书,大学也没有例外的留在了这座城市。 在大学里,她认识了小柏,一个高高瘦瘦话不是很多的南方大男...
    米小米_V587阅读 163评论 0 0
  • 雪后的世界是清冷的 尽管带了手套,帽子,口罩,将自己严严实实,包裹起来 依然挡不住寒气逼人 和往常一样去上班 穿过...
    利君理疗阅读 65评论 0 0
  • 不知道所谓重庆山城是不是像贵州一样,山和城市,山和庄家,或者所有都是混杂在一起的,山也许对这边的居民来说就像家...
    n你爱我像谁阅读 226评论 5 2