We call Humble semi-opinionated because you can use server-side rendering or decoupled UI (or both) in your application, and you can use a polyglot ORM (Unity) or not, whatever. Where Humble
does have an opinion is in the underlying technology stack. For persistence, currently we have a hard requirement of MySQL™ and MongoDB™. For Server Side "back-end" language, the hard requirement is PHP 7.2 or later, but there are plans
someday for Python and Java as well. For web server, the hard requirement is strictly Apache™, and likely will stay that way due to the "clean" URIs. This brings up some considerations on how you wish to run your Apache Web Server though.
The first thing you want to consider is caching options. Optimally configured, Apache can serve PHP applications faster than NGINX, though NGINX can serve static resources much faster than Apache. This is because on every request, even for static resources,
Apache will load the PHP parse when it is completely unnecessary. A solution then is to put a caching mechanism in front of Apache to serve the static resources (and for this, you could actually use NGINX!), and map
those dynamic resources that require PHP to Apache.
Anything served from
/js/,
/css/,
/edits/,
/api/,
/hook/,
/admin, or having a URI format of
/namespace/controller/action must be mapped to Apache. Anything else can be served by NGINX or other caching mechanism
The next thing you should consider is moving your HTACCESS file to inline rather than loaded per page.
Below is the default .htaccess file for the Humble main website (this site). This file is set up to run as you see below after you do the normal install, but there's a much better (and faster)
way to configure your .htaccess file... First though, here's a normal .htaccess file sitting in the root of your application
A better way of doing this is to comment out each line from the default .htaccess file (or just delete it, but the system may put it back on patching), and then move the .htaccess file
values into your Apache VHOST configuration as shown below...
If you do the two things above, you will find that your application will be more performant as well as scale better.