优化相关

1、defer和only跟查询优化相关

only:sql语句只能搜索到only指定的字段,若要查询其他字段,sql会再搜索一遍该字段,影响查询速度

defer:除了该字段sql都会搜素出

2、生成器解决了一个问题就是让需要迭代的值不再常驻内存,也就解决了内存资源消耗的问题

为了解决这一问题,生成器也付出了一定的代价,就是生成器中的值只能访问一次,也就是生成器的特性

3、django开发中数据库做过什么优化

1、设计表时,尽量少使用外键,因为外键约束会影响插入和删除性能
2、使用缓存,减少对数据库的访问
缓存又分单页面缓存、局部缓存、整站缓存
3、在orm框架下设置表时,能用varchar确定字段长度时,就别用text
4、可以给搜索频率高的字段属性,在定义时创建索引
5、django orm框架下的querysets本质就有缓存的
6、如果一个页面需要多次连接数据库,最好一次性取出所有需要的数据,减少对数据库的查询次数
7、若页面只需要数据库里某一个两个字段时,可以用QuerySet.values()取值
8、在模板标签里使用with标签可以缓存QuerySet的查询结果
在with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式

4、前后端优化

#对前端的优化主要有:
1.减少http请求,减少数据库的访问量,比如使用雪碧图。
雪碧图:就是将很多很多小图标放在一张图片上,就称之为雪碧图
使用雪碧图的目的:由于一个网页可能有很多小图标,浏览器在显示页面的时候就需要像服务器发送很多次请求,这样一来一是造成资源浪费,二是会导致访问速度变慢,这时就要把很多小图片放在一张图片上,按照一定的距离隔开,也就是雪碧图
2.使用浏览器缓存,将一些常用的css,js,logo图标,这些静态资源缓存到本地浏览器,通过设置http头中的cache-control和expires的属性,可设定浏览器缓存,缓存时间可以自定义。
3.对html,css,javascript文件进行压缩,减少网络的通信量。
#对后端的优化主要有:
1.合理的使用缓存技术,对一些常用到的动态数据,比如首页做一个缓存,或者某些常用的数据做
个缓存,设置一定得过期时间,这样减少了对数据库的压力,提升网站性能。
2.使用celery消息队列,将耗时的操作扔到队列里,让worker去监听队列里的任务,实现异步操
作,比如发邮件,发短信。
celery:异步任务调度的工具
3.就是代码上的一些优化,补充:nginx部署项目也是项目优化,可以配置合适的配置参数,提升效率,增加并发量。
4.如果太多考虑安全因素,服务器磁盘用固态硬盘读写,远远大于机械硬盘,这个技术现在没有普及,主要是固态硬盘技术上还不是完全成熟, 相信以后会大量普及。
5.另外还可以搭建服务器集群,将并发访问请求,分散到多台服务器上处理。
集群:同一个业务,部署在多个服务器上
分布式:一个业务拆分成多个子业务,部署在不同的服务器上
6.最后就是运维工作人员的一些性能优化技术了。

你可能感兴趣的:(优化相关)