Background Optimization disabled
Background optimization is automatically enabled in EWWW IO, but only if there is nothing blocking it. Note that the plugin re-tests background mode during every update. Sometimes database (object) caching will make it appear the test has failed when it really hasn't, so it's always worth clearing all caches and doing a re-test just to be sure.
Otherwise, when you see a message that says "Disabled automatically, async requests blocked", it means that EWWW IO attempted to send a test async request to admin-ajax.php, and the test failed, so the plugin could not enable background mode.
The test request is a small, random string (a bunch of letters and numbers) that is sent in an HTTP request from your server, to itself. So if anything prevents the server from communicating with itself (I know that sounds impossible, but it isn't), then the test will fail, and background mode won't work.
What could block it?
1. a Firewall
2. missing SSL (CA) certs
3. security plugins, although Wordfence and Shield normally work (unless you use the "lock to location" option)
With any of the instructions below, you can forward them to your web host or server admin for assistance. Please note that a "server admin" is not your WordPress administrator, it is the person/company responsible for operation of the actual server where your WordPress files live. Back to our regularly scheduled programming...
So the first thing I would do is to try and run a sample request from the command line (if you have that sort of access). Using something like cURL, fetch your homepage from the server itself:
Of course, substitute your actual web address in that command, or you'll get a false positive with example.com!
Then view the response and see if it looks normal (or if you get an error, figure out why).
If that all checks out, then I would start checking your server access/error logs. You can force EWWW IO to re-test background mode using the link on the settings page. When you do that, you should see something in your access logs corresponding to a request to admin-ajax.php, like this:
It's a POST request, so it may or may not show the "action" parameter, I just pulled that from my local Apache server. If you can't view your access logs, this is another case where you will need to enlist the help of your web host to find out if they can check the logs or if they have a firewall (or anything else) that would block these requests.
Lastly, check the logs for any security plugins you are using, or just try turning off your security plugin(s) and running another test. Still stuck? Give us a holler (below)!