web项目优化
1 循环时没有使用break
案例:查找一个值是否在数组中存在(为举例舍弃自带函数)
$aa=123;
$arr=array(234,123,5,6,45646,346,23);
foreach($arr as $v){
if($aa==$v){
dosth();
break;
}
}
这个是常犯的错误如果数量少或复杂度低性能没什么影响,如果遇到超大数组 那么就浪费了大量的资源
2 有时一次性将数据读取出来放入内存后处理更佳
遇到一个优化 开发者是想根据id递归查出所有的父子关系结构,每次递归都去用父id去数据库查。当时可能是数据量少 没有发现性能问题 ,但数据越来越多 每条记录都去访问一次数据库,没两下就拖垮数据库 一次业务请求却要访问成千上万次数据库
优化:如果量少 比如几万条 直接一次性获取到内存中 用完立马收回 释放内存
如果量大 可以异步多取几次大数据
3 有时候用where 取代 orderby性能更佳
案例:多个表联合查询,a,b,c 排序 order by a.status desc,b.id desc
在跨表排序时 虽然2个字段都建有索引 但没法使用到索引 会导致using temporary,using filesort 全表扫描 观察了一下数据 a.status最大的条数有几百条 即使排序出来也是几百条在前面,后面的几乎都不会去看
优化 where a.status=maxnumber order by b.id desc 可在搜索中加入按status的条件搜索 性能立马上升
4 有时候列表页就那么几个显示的字段 但速度特别慢,可根据情况分表处理
将查询率高且重要的字段分表出来 可降低查询复杂度 ,尤其是字段多 数据量大的表再合适不过;
5 多线程抓取写入数据库时 数据库吞吐量过低阻塞抓取速度
抓取速度快于数据库写入速度 导致数据库同步延迟并且阻塞抓取,这样的情况可以建立队列,将抓取的数据先插入队列 在慢慢写入数据库
6 不需要的数据提前过滤掉,不要在接下来一系列的操作后 才剔除 增加后面无用的查询或处理操作
7一条语句查询可完成却要循环几次去调用数据库,一般一条语句关联如果有索引且效率很高就不要分开处理了。
web项目优化的更多相关文章
- java web项目优化记录:优化考试系统
考试系统在进行压力測试时发现,并发量高之后出现了button无反应.试题答案不能写到数据库的问题,于是针对这些核心问题,进行了优化. 数据库方面: Select语句:Select * from TEB ...
- 利用Gulp优化部署Web项目[长文慎入]
Gulp Gulp是一款项目自动化的构建工具,与Grunt一样可以通过创建任务(Task)来帮助我们自动完成一些工作流的内容.当然,今天我们的内容并不是讨论这二者的区别,仅仅是介绍介绍如何利用Gulp ...
- 170612、web如何项目优化
Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...
- WEB项目构建优化之自动清除CSS中的图片缓存
在web项目构建发布时,经常遇到css中图片的修改优化,那么如何清除图片的缓存成为必须要解决的问题.曾经有过傻傻的方法就是直接在图片后面添加随机数.今天主要是从构建自动化方式来解决这个问题,提高开发及 ...
- 用简单的反射优化代码(动态web项目)
在动态web项目中,没有使用框架时,只是简单的jsp访问servlet实现增删改查, 无论是哪个方法都需要经过Servlet中的doGet()方法或doPost()方法,我们可以在链接中附带参数进行区 ...
- 前端项目优化 -Web 开发常用优化方案、Vue & React 项目优化
github github-myBlob 从输入URL到页面加载完成的整个过程 首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来 接下来是 TCP 握手 ...
- 关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)
本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...
- Web性能优化-合并js与css,减少请求
Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也 ...
- 项目优化经验分享(八)TeamLeader经验总结
引言 通过前面的七篇博客.我把自己在项目优化过程的经验进行了分享,今天这篇博客,作为一个总结,就来讲讲作为一个TeamLeader,在项目管理中遇到的问题和解决经验! 正文 问题一:团队之间怎么沟通? ...
随机推荐
- Python Django 分页
Python Django 分页 http://www.360doc.com/content/14/0721/17/16044571_396090985.shtml
- CAShapeLayer使用
UIView *showView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; [self.view addSubv ...
- 国外优秀JavaScript资源推荐
JavaScript的优秀资源 原文链接:http://code.tutsplus.com/articles/resources-for-staying-on-top-of-java ...
- Centos7 yum安装mysql
参考此文档:http://www.jb51.net/article/116032.htm http://www.jb51.net/article/95399.htm 1.在官网下载mysql57-co ...
- Python re模块正则表达式
- 关于js点击事件出现 xx is not defined at HTMLAnchorElement.onclick 的问题
测试: html: <button onclick="abc();">点我点我!</button> js: function abc(){ alert(“1 ...
- 利用python进行数据分析——(一)库的学习
总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn 一. Numpy: 标准安装的Python中用列表(list)保存一组值,可以用 ...
- String.prototype是什么?
String.prototype用于为某字符串对象新增方法,比如: 在javascript中有一方法replace,它是用于替换某字符串中第一个匹配的字符,如果我们想为它追加一个循环匹配所有字符的方法 ...
- iOS应用启动原理图解 及ARC强弱引用
iOS应用启动原理图解(红色箭头表示strong强引用,绿色箭头代表weak若引用) 只要将UI控件拖到Storyboard里控制器的大view上,Xcode会自动将这些控件以强引用的形式加入到sel ...
- OC中对象的description方法
周所周知,我们在做项目时, 可以在类的.m文件中重写该类的对象的描述description方法: 示例: -(NSString *)description{ NSString *str = [N ...