PHP 大型网站高并发大流量解决方案
网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢?
1. HTML静态化
效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。
2.图片服务器分离
图片是最消耗资源的,于是我们有必要将图片与页面进行分离,可以搭建一个图片服务器或者使用第三方服务,如七牛云等。
3.数据库集群,库表散列
数据库集群:主从复制,读写分离,双主热备等操作。可以使用Mycat数据库中间件
库表散列:分库分表
4.缓存
a.文件缓存:使用 PHP 文件操作函数,把数据缓存到服务器磁盘文件中
b.内存缓存:Redis、Memcached、MongoDB。Redis:常用于队列服务器的缓存,可持久化,Mongodb:数据量较大的缓存,memcached:缓存大小有限制,超过1M不推荐使用;协议简单,基于libevent,存储于内存,服务器重启所有缓存数据丢失。
【内存缓存应用】:
会话session管理,会话默认是用文件保存,修改php.ini中的session储存介质的配置,用内存缓存可以完美解决负载均衡集群服务器会话丢失的问题
c.Opcode:配置好php zend opcode扩展即可实现缓存
d.Apache缓存:利用 mod_expires ,指定缓存的过期时间,可以缓存HTML、图片、JS、CSS 等。
e.Nginx缓存:利用 expire 参数,指定缓存的过期时间,可以缓存HTML、图片、JS、CSS 等。
5.镜像
镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。
6.负载均衡
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的高端解决办法。
(1) nginx反向代理实现负载均衡
(2) lvs实现负载均衡
7.PHP代码编写优化
具体优化细节详见另一篇博文《PHP性能优化》
8.数据库优化
(1)选择正确的存储引擎
(2)优化字段的数据类型
(3)为搜索字段添加索引
(4)sql语句优化
(5)数据库缓存
(6)分库分表,分区
(7)主从复制,读写分离
(8)负载均衡
等。具体优化细节可参考另一篇博文《MYSQL 性能优化》
9.前端优化
(1) 减少http请求[将css,js等合并]
(2) 添加异步请求(先不将所有数据都展示给用户,用户触发某个事件,才会异步请求数据)
(3) 启用浏览器缓存和文件压缩
(4) cdn加速
(5) 建立独立的图片服务器(减少i/o)
针对JS,图片,样式文件的优化,可使用以下工具检测:
(1)PageSpeed 谷歌开发的工具
网站管理员和网络开发人员可以使用PageSpeed来评估他们网页的性能,并获得有关如何改进性能的建议。
(2)yslow YSlow
可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化
10.流量优化:防盗链处理
可参考博文《8种网站防止盗链的方法》
11.其他:针对thinkphp 有以下几种方式
(1) 关闭调试模式
由于关闭调试模式之后,系统会自动生成项目编译缓存以及关闭日志写 入,这样可以减少很多的IO加载和日志写入的开销。
(2)开启页面压缩输出
1版本开始,增加了OUTPUT_ENCODE配置参数,用于控制页面压缩输出。
(3) 开启缓存
在网站部署环境安装APC或者Xcache缓存能够有效提升网站运行性能和内存占用
XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上 的 PHP 性能. 他通过把编译 PHP后的数据缓冲到共享内存从而避免重复的编译 过程, 能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高您的页面生 成速率 2 到5 倍, 降低服务器负载.
Alternative PHP Cache (APC)是一种对PHP有效的开放源高速缓冲储存器工具,它能够缓存opcode的php中间码。
(4)字段缓存
默认情况下,字段缓存是自动生成的,在开发完成之后,基本上数据库的变动变得 比较少,因此可以考虑合并字段缓存到对应的模型类,这样能够减少每次读取字段 缓存的IO开销。合并的方法是在Runtime/Data/_fields下面找到对应的字段缓存文件
来源地址:https://blog.csdn.net/qq_31432773/article/details/127161350
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341