在宝塔面板上把PHP版本升级到了8.3,不知怎么弄的,网站打开感觉总卡顿一下,这不应该啊,建站用的博友@大峰 同款主题,看了下他的页面打开在300毫秒左右,F12又看了下控制台,我的站点页面加载时间在700-1200毫秒之间,这可不像国内空间该有的速度啊,于是乎开始折腾,把PHP版本回退、mysql版本回退升级,折腾了两天还是依旧卡卡的,于是乎开始上逼乎,终于在不懈的努力下找到了原因,之前一键配置的面板环境因为自己手贱,重新安装PHP时,忘了安装Redis和opcache模块。
Redis:
redis 加速原理,php 在执行函数最消耗时间的就是查询 SQL 数据库了,一般来讲一个页面的数据库查询大概在 30到 100次左右,使用 Redis 或者 Memcached 缓存,原理就是将 php 查询过的数据库缓存下来,下一次相同内容就不再查询数据库了,直接从缓存获取,这样就很大程度上提高 php 执行效率。
为了观察优化结果,我在页角添加了统计当前页面数据库查询次数的代码,经过优化,原本文章页50次左右的查询降低到了只有10次以内。
了解的朋友应该都明白一些,WordPress 官方采用 Object Cache 对象缓存,同时大多主题的也都是遵循此机制,因此配合 Redis 或者 Memcached 缓存,能将数据库查询降低 80%,有效的提高了渲染速度!
Redis:数据结构服务器
Redis(Remote Dictionary Server)是一个基于内存的高性能键值存储系统,常被用作数据库、缓存和消息代理。
特性:
- 高性能:由于数据存储在内存中,Redis提供了极快的读写速度。
- 丰富的支持:Redis支持各种数据结构,包括字符串、列表、哈希、集合和有序集合。
- 分布式:Redis可以被配置为集群模式,以提供高可用性和可扩展性。
- 持久化:Redis支持将数据持久化到磁盘,以防止数据丢失。
- 复制:Redis可以创建主从副本,以提高数据冗余和可用性。
- 多种语言支持:Redis提供多种客户端库,支持多种编程语言。
应用场景:
- 缓存:Redis可用于缓存数据库查询结果或其他经常访问的数据,以减少数据库负载并提高响应时间。
- 消息队列:Redis可用于实现消息队列,用于异步通信和分布式系统。
- 会话管理:Redis可用于存储用户会话数据,以实现无状态web应用程序。
- 排行榜:Redis有序集合可用于实现排行榜等功能。
- 限制速率:Redis可用于限制用户对特定操作的调用频率。
opcache:
OPcache(Opcode Cache)是 PHP 的一个内置扩展,用于缓存 PHP 脚本的解释代码(opcode),从而提高 PHP 应用程序的性能。当 PHP 脚本首次被解释执行时,PHP 将脚本编译成一组中间代码(opcode),并在运行时执行这些 opcode。OPcache 的作用是缓存这些 opcode,避免在每次请求时都重新解释和执行相同的脚本。
OPcache 的主要功能包括:
脚本缓存: 将编译后的 opcode 存储在内存中,避免重复的解释和编译过程,从而加快 PHP 脚本的执行速度。
减少文件 I/O 操作: 由于 opcode 已经被缓存,无需每次请求都读取和解析 PHP 脚本文件,减少了对文件系统的 I/O 操作。
减少 CPU 消耗: 直接执行 opcode 比解释 PHP 脚本效率更高,因此 OPcache 有助于降低 CPU 消耗,提高 PHP 应用程序的响应速度。
减少内存消耗: 由于脚本的 opcode 被缓存,相同的脚本只需在内存中存储一份,减少了内存消耗。
提高并发性能: 通过减少对文件系统的访问和缓存 opcode,OPcache 提高了 PHP 应用程序的并发性能,使得服务器能够更有效地处理大量并发请求。
影响性能的方面:
首次请求: OPcache 在首次请求时需要编译和缓存脚本,因此首次请求的性能提升可能不明显。但在后续的请求中,由于 opcode 已经被缓存,性能将得到显著提升。
内存使用: OPcache 需要一定的内存来存储缓存的 opcode。虽然这比每次请求都重新解释脚本的内存消耗小很多,但在配置 OPcache 时需要注意调整内存限制,以避免占用过多系统资源。
OPcache 是一个非常有益的 PHP 扩展,适用于提高 PHP 应用程序的性能和响应速度,特别是在高流量、大规模应用中。在生产环境中,建议启用 OPcache 以获得更好的 PHP 执行性能。
配置Redis我使用了Redis Object Cache插件,安装很简单,在宝塔面板安装好Redis后,WordPress后台点击Flush Cache按钮就可以了,它的作用是把一些网页缓存的数据存储到内存中,在新的访客再次访问时直接调用。
OPcache 的话直接在宝塔平台安装,不需配置,安装结束后记得看下它是否被启用。
经过以上安装配置后,网页的打开速度终于恢复正常了,基本上稳定在300毫秒左右,最快时200出头可以打开页面,这几天因为站点卡顿,一度想换建站程序或者直接用静态博客了,修好了,还是不换了,毕竟WordPress的插件更多、学习成本也低,我觉得过阵子折腾够了就应该专心咬文嚼字了,开博客是不是都逃不过折腾,从功能到主题,全折腾个遍后,才发现,文字才是最重要的。
好吧 折腾万岁,下次配置面板少走点弯路,也希望自己早点把重心放在文字上咯。
网站速度真快
嘿嘿,优化了一下午,差点准备转HUGO了…
Redis:“每秒百万读写不是我的极限,是内存的极限”
真挺快了 弄好后 肉眼可见的快好几倍
速度很快啊 折腾万岁
折腾呗 过阵折腾够就不弄了
这速度可以啊。
基本上不查询数据库,从内存里直接调用数据了,所以看起来非常快。