系统前后端优化(菜鸟级)

本文章主要讨论系统前后端优化。

具雅虎和一些知名网站统计,用户使用,等待的时间80%都花费到了浏览器前端加载上面,页面上有太多类型的数据需要加载,图片、视频、CSS、Javascript、 flash等等零碎元素上,因此在系统优化方面前端优化往往能达到立竿见影的效果。所以前端的优化在优化方面很重要。

在前端优化方面可以采用以下小技巧优化系统前端:
(1)正确放置CSS和JS文件,应该吧CSS放在文件的顶部,而JS放在文件底部的,这样用户会首先看到页面的渲染,让页面呈现一个完整的状态,然后在运行JS文件。所以JS一定要放在CSS后面。
(2)减少页面的Http请求,如:不必要的图片,如:没用的 JavaScript 代码、过多的 css、多余的插件等等元素。清除后运行速度会明显提升。
(3)压缩JS、CSS文件:如今有了压缩技术,可以采用压缩技术使你的代码简洁而且易读,但它们也会在文档中添加多余的字节。
(4)使用预先获取功能:可以在真正需要之前通过取得必需的资源和相关数据来改善访问用户的浏览体验。预先获取很容易实现。根据你想要使用的预先获取形式,你只需在网站 HTML 中的链接属性上增加 rel=”prefetch”,rel=”dns-prefetch”,或者 rel=”prerender” 标记。
(5)使用 CDN 和缓存提高速度:这是一种缓存机制提升速度的方法。
(6)将图片和视频压缩,减小大小。
(7)使用轻量级框架,或许自己可以写出同样的效果,但一般前端框架是经过处理的,使用的都是简洁的 HTML,CSS 和 JavaScript 代码。

后端优化:前端优化可以在服务器效率固定的情况下减少无畏的浪费,其实前端虽然效果好,但仅靠前端优化已经不能解决所有问题了,瓶颈是需要后端优化来突破的,后端处理并行请求的能力、效率、硬件性能以及系统的可扩展性,都将成为影响网站性能和稳定的关键瓶颈所在。

首先后端的优化是体现一名优秀软件工程师能力的时候,主要就是检查程序编码规范、数据库结构对性能的影响,比如一些糟糕的循环语句、查询语句、索引表、乱七八糟的外检,都将成为系统运行的速度成倍下降的罪魁祸首。所以一个具有全局思考的能力、良好编程习惯,对数据库运行机制有所了解的软件工程师是对后端优化的巨大助力。

1、对数据库软件配置的优化。
2、应用程序环境加速
3、应用缓存技术提高数据库效能,文件缓存和分布式缓存
4、服务器运行状态的检测,找到影响性能的瓶颈所在

最后一些百度的定义
性能:衡量完成特定任务的速度或效率
响应时间:衡量系统与用户交互式多久能够收到响应
 吞吐量: 衡量系统在单位时间里可以完成的任务量

优化传统B*Tree 优化数据访问
如何更好的设计索引
使用Write Optimized B-Tree优化数据访问
Stratified B-trees (Acunu)
LSM tree(BigTable,Cassandra,LevelDB)
Fractal Tree Indexes(TokuDB)
使用基于Hash的算法访问数据
Oracle Hash Cluster,BDB,Bitcask 

1、不访问不必要的数据
1.1、使用二叉树方式定位数据
1.2、使用列存储或分表方式分开存储
2、合理的利用硬件来提升访问速度
2.1、使用缓存应对数据重复访问数据库
2.2、使用批处理来减少交互次数
2.3、使用新硬件来降低后端的延时
3、提升系统的吞吐量
3.1、对工作单元进行细化,减少串行操作
3.2、优化硬件配置,提高整体的TCO与硬件利用率
3.3、合理的拆分(水平、垂直拆分)以提高系统的整体吞吐能力

缓存策略的 注意事项:
考虑缓存的刷新策略
考虑缓存的数据延迟对业务的影响
考虑缓存失效时,系统的支撑能力
参考缓存工具: MemCached, Tair, Redis 

你可能感兴趣的:(Java总结)