了解OPCache行为

时间:2019-04-21 22:05:29

标签: php caching cloudflare

即使网站位于CloudFlare CDN的背后,我们还是决定使用OPCache来减少服务器上的负载,因为每秒最大(峰值)每秒约有400个活动用户(大多数情况下为50-100 u / s) )。

但是大多数页面的每个用户都有一些不同的数据,例如用户的仪表板概述,大多数数据是相同的,但是每个用户需要更新的数字却有所不同。

我的问题是:

  1. 在这样的网站上使用OPCache是​​否明智?
  2. 它将如何处理具有唯一查询的页面?是否会比没有OPCache运行更多的RAM(为每个用户缓存多个页面)?
  3. 这会影响诸如注册/登录等页面的性能吗?
  4. read所有PHP应用程序都应使用OPCache,对吗?

P.S。该网站在PHP 7.3.4上运行

4 个答案:

答案 0 :(得分:5)

  1. 是的,它将提高性能
  2. 如果您的RAM使用量增加并且对此感到担心,则可以通过opcache.memory_consumption
  3. 来微调内存消耗。
  4. 影响意味着它们会更快
  5. 是的,除了边缘情况(例如,当您的应用程序的源代码以非常快的速度更改或测试时)之外,确实没有理由不使用OPCache。

TLDR:生产代码应始终启用OPCached。

答案 1 :(得分:4)

OPcache仅缓存PHP脚本的内部操作码表示,而不缓存其输出。执行的查询或页面显示的内容对OPcache的行为没有影响。

此缓存将提高所有PHP网页的性能。因此,应始终在生产站点上启用它。

答案 2 :(得分:2)

每个PHP脚本都在运行时进行编译, 将人类可读的代码转换成机器可以理解的代码需要花费时间。

OpCache是​​字节码缓存引擎,它将脚本仅编译一次为字节码脚本-这样可以节省时间-然后将预编译的脚本存储在内存中,这将提高PHP应用程序的性能。

我认为您缺少的是opcache不会缓存脚本的结果,而只是编译脚本。

请注意,如果该方法本身针对每个用户都在更改,则此方法不好 还是从-例如-数据库

加载

答案 3 :(得分:0)

此方法的一般观点 php缓存,无论它是APC缓存还是opcache,还是一种了不起的策略,通常应该将php性能提高50% 由于它如下 当php脚本受到攻击时,这涉及三个主要步骤

脚本的1-parse

脚本的2编译

3输出

APC缓存或充当中介,因为它以已编译的形式保存php脚本,因此php将直接在输出阶段启动,这不会影响查询,但会提高查询MySQL或其他语句的速度SELECT之类的东西,但是它涉及到像PDO这样的扩展的执行,因此它将变得更快

您可以按照以下方式对扩展名进行分类

适用于php 5的APC或Xcache

在新的php版本中,请使用opcache

它们都有相同的原理 一些像APC的开发者,其他像opcache 例如,流行的购物平台X-cart使用xcache。