pierstoval
The threads thing, the worker mode, etc., all of it is optional, but basic Caddy + PHP is already production-ready, I've been using this kind of setup for a while, and switching to FrankenPHP when you already have Caddy is completely harmless.
The only thing FrankenPHP does not is providing multiple versions of PHP in the same binary. For that, I'd still use Caddy + PHP-FPM, and it's fine.
And honestly, FrankenPHP is an incredibly good combination of both worlds: brings all the scalability of Go, with the flexibility of Caddy (which is written in Go too) in the infrastructure, while allowing us to continue coding with all the incredibly powerful frameworks we have in PHP to create the web app. It's the best for all the people that have an interest in that. You can't hate on that unless you just hate for the sake of hating.
Basically it's about Angular, React, Svelte and Vue, with or without their full-stack framework (like Next for React, SvelteKit for Svelte, and Nuxt for Vue), and there's even a variation of using React with Vite as bundler instead of Webpack.
Turns out that, of full-stack frameworks, Svelte Kit has really good results.
A quite interesting conclusion for now is that runtime performances are not really significant: using a headless browser, repeating some tasks 200 times that imply no network calls and only DOM modifications. Everything takes about seconds, and for 200 actions that should be super quick, as said, it's less than 10% difference on the slowest versus the fastest.
What do you think of these tests?
Feel free to comment on the method, everything is in the repository for you to criticize so that we might have better benchmarks at some point :)