The question on our Facebook page it was: "What makes iGuRu.gr fast?" There were several answers: the cloud, the CDN, the server location. Yes, they may be, but they are not enough.
IGuRu.gr uses cloud hosting in a fairly powerful VPS (AMD EPYC 7702, 64GB DDR4 RAM (ECC) with 10 dedicated cores) but we could have something smaller. But what plays an important role in the performance of the site is the setup.
Apache can cause performance issues when the number of concurrent users increases above a certain point - perhaps hundreds of concurrent users. Apache has significant resources on every connection, so it tends to run out of available memory. Apache can be configured to restrict connections to avoid memory depletion, but this means that when the limit is exceeded, new connection requests will have to wait.
So to avoid all of the above, we replaced (for years) Apache with NGINX. NGINX manages many thousands of simultaneous connections with a fixed memory footprint, so we do not need to limit the number of simultaneous connections.
NGINX (pronounced engine X) manages static files better, with built-in and easily configurable cache controls. The load on the web server is reduced and the site can serve much more traffic much faster.
You can (if you want Apache security) place an NGINX server "in front" of Apache as the reverse server. The NGINX server will receive the requests, serve the static files and send the PHP requests to Apache, to process them.
For dynamically generated pages like those using WordPress, NGINX settings are easy.
Add permalink support to NGINX. This eliminates the dependency on the .htaccess file, which is specific to Apache.
Add support for caching with a caching tool like FastCGI and of course apply all WordPress security precautions to NGINX.
Adding caching to WordPress and combining WordPress with NGINX do wonders. But they do not reach….
In addition to the above we use Cloudflare for DNS and caching. The caching from this service is so powerful that if it is not cleared automatically after each new post you will not see the post on the page.
Then we can talk about the CDN, ie the storage and serving of all static files (images, css, js) from another storage server and not from the web server running SQL and PHP.