PHP 大型网站优化 大数据大并发大流量
什么是大型网站? 大型网站要满足一下标准.
pv(page views)值, 页面浏览量,一个网站的所有页面,在24小时内被浏览的总的次数, 一般说 到千万.uv(unique visitor) 独立访客: 一个网站的24小时内,有多少个用户来访问该网站, 一般说 到10万
ip值,一个网站的24小时内,有多少个ip访问。在不考虑内网和局域网的情况下,uv 等于 ip, 如果考虑的话,uv值略大于 ip,一般说 到10万
大型网站带来的问题
大并发
概述: 在同一个时间点,有大量的客户来访问我们的网站,如果访问量过大,就可能造成网站瘫痪。大流量
概述: 当网站大后,有大量的图片,视频,flash, 这样就会对流量要求高,需要更多更大的带宽.(花钱)大存储
概述:你的数据量会成海量的数据,如果我们的数据放入一张表,是无法应对的。可能对数据保存和查询出现问题
大型网站的常见处理方案
大并发的处理方法(对架构分层+负载均衡+集群)
大流量的处理方案
网站图片尽量使用背景图。
可以启用apache自带的数据压缩机制(gzip ,deflate) .
使用cdn(content delivery network) 内容分发网络
网站图片,在不影响观看的情况下,尽量使用jpg(分辨率底),不要使用高分辨率。
大存储的常见解决方案
使用缓存技术(内存缓存[redis,mysql数据库(memory引擎)],页面缓存(页面静态化)
优化数据库
表的设计要合理(满足3NF) 原子性,唯一性,拆分表
添加索引(主键索引|全文索引|唯一索引|普通索引|空间索引)
优化sql语句
分表( 水平分表,垂直分表),分区
读写分离
添加索引(主键索引|全文索引|唯一索引|普通索引|空间索引)
优化sql语句
分表( 水平分表,垂直分表),分区
读写分离
优化my.ini配置
软件硬件应当升级
软件硬件应当升级
页面静态化
使用php自己的ob缓存技术实现
使用模板替换技术实现
使用模板替换技术实现
主流的mvc框架(tp,yii,laravel)模板引擎一般都自带页面静态化
使用ob缓存
PHP程序在运行过程中,存在一个程序缓存,该缓存必须存在,程序员无法控制。
PHP程序运行过程中,我们可以开启ob缓存(在php5.2前,默认ob是关闭的,在后面版本默认是打开的), 打开ob缓存的方法有两个
a) 修改php.ini output_buffering = 4096,
b) 还有就是直接在php文件中打开 ob_start();
PHP程序运行过程中,如果打开了ob缓存,那么echo 数据会被放入到ob中,header信息都是放入程序缓存
当php文件执行完毕后,就会把ob缓存的数据刷新到程序缓存,然后apache封包,返回给浏览器。
PHP程序运行过程中,我们可以开启ob缓存(在php5.2前,默认ob是关闭的,在后面版本默认是打开的), 打开ob缓存的方法有两个
a) 修改php.ini output_buffering = 4096,
b) 还有就是直接在php文件中打开 ob_start();
PHP程序运行过程中,如果打开了ob缓存,那么echo 数据会被放入到ob中,header信息都是放入程序缓存
当php文件执行完毕后,就会把ob缓存的数据刷新到程序缓存,然后apache封包,返回给浏览器。