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自建一个DNS服务器
前段日子一直在做公司的DNS调度程序,不过由于性能比较差,方案最终废弃掉了.两个半月心血,不想白白浪费掉,于是改了改,把商业秘密相关的部分去掉,变成了一个公共的DNS服务器.其实说的简单点,就是一个可 ...
- 【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()
[我所认知的BIOS]-> uEFI AHCI Driver(8) - Pci.Read() LightSeed 6/19/2014 社会一直在变.不晓得是不是社会变的太苦开,而我没变所以我反而 ...
- 微信公众号支付IOS系统能够唤起,安卓系统不能唤起的问题解决
前言 之前系统内做过要给微信支付程序,只不过鉴于业务应用场景,大部分都是使用业务内的金币兑换产品,没有实际用到支付功能.后来运营小哥哥说他的手机不能唤起支付.于是乎我查询了一下资料,发现了这么个问题. ...
- Git--将服务器代码更新到本地
1. git status(查看本地分支文件信息,确保更新时不产生冲突) 2. git checkout -- [file name] (若文件有修改,可以还原到最初状态; 若文件需要更新到服务器上, ...
- 【题解】洛谷P2296 [NOIP2014TG] 寻找道路(SPFA+DFS)
题目来源:洛谷P2296 思路 一开始看还以为是一道水题 虽然本来就挺水的 本道题的难点在于如何判断是否路径上的点都会直接或者间接连着终点 我们需要在一开始多建一个反向图 然后从终点DFS回去 把路径 ...
- (CodeForces - 5C)Longest Regular Bracket Sequence(dp+栈)(最长连续括号模板)
(CodeForces - 5C)Longest Regular Bracket Sequence time limit per test:2 seconds memory limit per tes ...
- HDU 2036 改革春风吹满地 (求多边形面积)
传送门: 改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- 第23章 I2C—读写EEPR
本章参考资料:<STM32F76xxx参考手册>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<I2C ...
- EF Core中关于System.Linq.Dynamic.Core的使用(转载)
项目中经常用到组合条件查询,根据用户配置的查询条件进行搜索,拼接SQL容易造成SQL注入,普通的LINQ可以用表达式树来完成,但也比较麻烦.有个System.Linq.Dynamic.Core用起来比 ...
- SVN 操作报错 “Previous operation has not finished; run 'cleanup' if it was interrupted“
今天在 通过 SVN 合并代码的时候报了如下的错误 ”Previous operation has not finished; run 'cleanup' if it was interrupted“ ...