OPcache

OPcache是一个PHP扩展程序，由PHP官方发布，其功能是缓存编译后的字节码以供后续使用，可提升程序的处理速度。

 历史 
2008年，OPcache的前身，PHPNG的开发已经开始，到了2013年，PHP团队在新的5.5.0版本将OPcache合并进入PHP核心并被默认启用，这标志着OPcache成为官方且预装扩展，同时，OPcache在該版本也更新了持久化功能，现在其可将字节码存入文件系统，而到了PHP 7.4.0，OPcache则更新了预加载功能，该功能可以预先加载尚未运行的代码以提升性能。到了PHP 8.0.0 时，OPcache添加了一个内建的即时编译器，原本缓存的操作码本来需要被解释器实时转译为机器码再执行，这次更新使得机器码也可以被缓存，省去了解释的步骤，进一步提升性能，而在最新的PHP 8.4.0中，OPcache的JIT默认获得了64MB的缓冲区空间，但需手工启用。

 原理 
OPcache在访问新代码片段时，會检查其是否存在於缓存。若答案為否，則會编译該段代码，并将编译后生成的字节码在内存中进行缓存，下一次执行同一段代码时，便无需运行词法分析等编译过程，将直接从内存中提取字节码进行执行而不是再次编译或实时编译所有代码。同时，OPcache还会在代码变动时自动更新缓存的字节码。另外，OPcache同样缓存了一些常量及文件中的符号表。

 实际性能提升 
在PHP 5.5时，OPcache之性能提升约50%，同时降低了磁盘和CPU的占用率（因为编译过程需要消耗大量CPU），也间接因为性能瓶颈的降低提升了应用程序的可扩展性，提升如此显著的原因是操作码被缓存，PHP无需再读取、解析、编译原始码。

 參考資料 

 外部連結 

Category:PHP
Category:PHP扩展

Category:PHP
Category:PHP扩展