Optimize layer by layer — each layer absorbs load before it reaches the next. The goal is to serve most requests from a cache and keep PHP and the database doing as little work as possible.
1. PHP-FPM and OPcache
Size the pool to your RAM, and enable so PHP is compiled once, not on every request:
