Skip to content

Latest commit

 

History

History
91 lines (61 loc) · 3.52 KB

高性能网站架构方案.md

File metadata and controls

91 lines (61 loc) · 3.52 KB

#高性能网站架构方案

##WEB前端性能优化

一般来说,WEB前端指网站业务逻辑之前的部分,包括浏览器加载、网站视图、图片服务、CDN服务等,主要优化手段有优化浏览器访问、使用反向代理、CDN等

  • 一、浏览器访问优化
    • 1.减少HTTP请求
    • 2.使用浏览器缓存:更新频率低的静态资源
    • 3.在服务器端对文件进行压缩
    • 4.CSS放在最前面,JavaScript放在最后面
    • 5.减少cookie的传输
  • 二、使用CDN加速:将数据缓存在距离用户最近的地方,加快了用户访问速度,减少了数据中心负载压力
  • 三、反向代理 当用户第一次访问静态内容的时候,静态内容就被缓存在反向代理服务器上,这样当其他用户访问该静态内容的时候,就可以直接从发现代理服务器返回,加速响应速度,减轻WEB服务器负载压力。

应用服务器性能优化

应用服务器就是处理网站业务逻辑的服务器,网站的业务代码都部署在这里。 优化手段有缓存、集群、异步。

  • 一、分布式缓存

  • 1.缓存的基本原理 缓存是指将数据存储在访问速度相对较高的存储介质中,以供系统处理。 一方面缓存访问速度快,可以较少数据访问的时间; 另一方面,如果缓存的数据经过计算处理得到的,那么被缓存的数据无需重复计算即可直接使用,因此缓存还起到较少计算时间的作用。 缓存的本质是一个内存Hash表,网站应用中,数据缓存以Key、value的形式存储。Hash表数据读写的时间复杂度为O(1)

  • 2.合理使用缓存

    • ① 频繁修改的数据
    • ② 没有热点的数据
    • ③ 数据不一致与脏读
    • ④ 缓存可用性
    • ⑤ 缓存预热
    • ⑥ 缓存穿透
  • 3.分布式缓存架构

  • 4.Memcache

  • 二、异步 任何可以晚点做的事情都应该晚点做 使用消息队列将调用异步化

数据库优化

  • 一、SQL优化

  • 1.在WHERE 语句中,尽量避免对索引字段进行计算操作;

  • 2.LIMIT 基数比较大时,使用between

  • 3.不要以字符格式声明数字,要以数字格式声明字符值。(日期同样)否则会使索引无效,产生全表扫描。

  • 4.不要 使用 count( id), 而 应该 是 count(*)。

  • 5.尽量不要使用NULL

  • 6.使用批量插入

  • 7.使用JOIN时,应该是小结果集驱动大结果集,即结果集相对小的作为左表,相对大的作为右表

  • 8.不要进行不必要的排序操作

  • 9.对复杂SQL进行拆分,比如将多个JOIN查询或子查询修改为多次单表查询,既能提升效率,也方便后期维护

  • 10.根据集合的相关理论,对SQL的条件表达式进行等价代换,比如AND操作,当前面的表达式为FALSE时,就不会执行后面的表达式,所以要将为FALSE可能性大的条件放在前面。

  • 二、索引 不要在建立的索引的数据列上进行下列操作:

  • a.避免对索引字段进行计算操作

  • b.避免在索引字段上使用not,<>,!=

  • c.避免在索引列上使用IS NULL和IS NOT NULL

  • d.避免在索引列上出现数据类型转换

  • e.避免在索引字段上使用函数

  • 避免建立索引的列中使用空值。

  • 三、数据库设计

    • 范式与反范式
  • 1.分区、水平分表、垂直分表,以减少单表数据量

  • 2.使用联合主键,将关联表的主键直接存储起来,反范式设计

  • 3.将非关系型的数据迁移到NOSQL

  • 四、数据库配置

PHP优化