为什么你的网站开了OPcache,还是很慢?一文教你设置最佳OPcache参数
很多站长都知道打开 opcache 可以提升网站速度,但是当他们打开之后,网站速度有时候却并没有多大提升,速度时快时慢。
我了解大多数站长都懂一点代码,但大部分并不是专业的开发者。他们对 opcache 的工作方式不太了解,只知道可以加速,因此能做的仅仅是开启,后续配置无从下手。甚至有一部分站长都不知道 opcache 是什么,因为有时候帮他们排查问题的时候,opcache 居然没有打开。
OPcache 是什么
先简单介绍一下 OPcache。OPcache 是 PHP 内置的字节码缓存组件,能缓存 PHP 的字节码,可以省略 PHP 的编译耗时。当没有启用 OPCache 时,PHP 的执行是:词法分析和语法分析 -> 编译成字节码 -> 执行。每一个请求到来,PHP 都会重复执行词法语法分析,编译这个重复的步骤,无论文件是否有变化,都要重新编译一次,非常浪费。当启用了 OPcache 之后:词法分析和语法分析,编译成字节码这两个步骤就被缓存下来了。当访问一个页面时,PHP 做的只有执行这一步骤,速度会快非常多。
为什么速度时快时慢
开启了 OPcache 的站长可能会有这感受:有时候访问挺快,但有时候访问又慢了,明明打开的是同样的页面,但访问速度却一直不太稳定。首先 OPcache 它就是一个 cache,并不是一个很神奇的东西,没有什么魔法。只要是 cache,就存在命中和未命中的情况。当命中缓存的时候,直接使用缓存,速度就快。当缓存未命中之后,又需要重新执行所有的编译步骤,速度自然就慢了。缓存未命中情况可以分为两种:
- 缓存过期了
- 可用的缓存空间不足了
因此,如果你开了 OPcache 后访问网站速度依然很慢,大概率是这种情况:
- 你的 OPcache 缓存空间太小,无法缓存所有的 PHP 文件
2. 缓存过期时间设置太短,刚缓存好,一会儿访问时缓存又过期了特别是当你的网站流量不大的时, 不合理的设置可能会导致每次访问都是未命中的状态。
最佳 OPcache 参数
这里提供一份最佳及最简洁的 OPcache 参数供大家参考。
; 启用操作码缓存
opcache.enable=1
opcache.enable_cli=0
; 分配足够内存
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=65407
; 重要:生产环境不检查时间戳
opcache.validate_timestamps=0
opcache.save_comments=1
; 启用大内存页 (如果系统支持)
opcache.huge_code_pages=1
配置中的 validate_timestamps 为 0 可以让你的 OPcache 缓存不过期,保证每次访问都命中缓存。memory_consumption 设置的是256M,这个大小对于大部分 PHP 项目已经足够了。
如何设置
更改 OPcache 配置需要修改 php.ini 文件。如果你在用宝塔面板,可以在 PHP 的配置文件中,找到 [Zend Opcache] 这一节

可以看到我上面的配置缓存只有3s,这对性能影响非常大,可以按照上面的最佳配置重新更改一下配置。更改完配置之后,记得重启 PHP。需要注意一点,当 opcache.validate_timestamps 设置为0之后,缓存会一直存在,不会自动更新。因此当 PHP 代码有改动的时候,需要重启一下 PHP。
你可能还喜欢下面这些文章

//demo.imwpweb.com/wpnovo/多设备支持主题支持PC和移动端界面,独立设置,互不干扰。移动端首页(右)图:小说页面PC端和移动端的展示付费订阅主题支持付费订阅功能,支持付费单章订阅、整本小说订阅模式。

什么是内链内链,顾名思义就是在同一网站域名下的内容页面之间的互相链接(自己网站的内容链接到自己网站的内部页面,也称之为站内链接)。自动内链工作原理简单来说,我们设定一些词表以及词表对应的链接,比如词是wordpress插件,链接是http

这款插件的核心功能就是一点:找出文章中的违禁词、敏感词等措辞不当的词语,替换成你设置的更合适的词或者直接替换“*”号。请注意,需要同时下载站长工具箱和违禁词屏蔽插件,安装插件时也需要两个插件同时安装。

2、自动生成的图片并非真实在磁盘中的图片,而是动态生成的,如果保存到磁盘会占用大量空间,这个空间没必要浪费,因此修改主题代码,直接将缩略图的地址改为wpac自动生成的缩略图地址是一个非常好的方案。

wprec利用相似度算法计算每篇文章之间的相似度,找到与当前文章最相似的一些文章,展现在文章底部作为相关文章。我们知道,相关推荐插件推荐的原理是根据当前文章的特征(文章的高权重标签),从文章库中召回相关文章,再根据相关性评分,最后选出To