I didn't see the option for CDN (or Server Relocation).
It doesn't matter whether or not you use techniques like Caching and Minification, if the ping between your server and your clients exceeds 250ms, your users will perceive slowness, and it is absolutely easy to reach those pings with a Mobile connection.
So the first option should be to pick a server at the nearest location from the majority of your users, or pick a CDN which covers where most of your audience is located, most CDNs also offer caching and minification with their most basic plan.
After having a CDN sorted out, the next option is Caching, especially if you do more READ than WRITE requests, most of the advantages of Caching are perceived when you get peaks of traffic, so rather than improving the experience of a specific user, you are improving the experience of all your users as a whole.
If you do more WRITE than READ requests, you should probably start exploring distributed databases.
The use of modern CSS and markup should be your last resort with existing projects, since that means to refactor them, but it should be your first option with new projects, since you get client-side optimizations for free just by writing modern code.
Also, the use of ASYNC/DEFER statements depends solely on your project, for ex. you may depend on an external API like Google Maps, so wouldn't be able to use ASYNC, and the same rule as before applies: It should be your first option with new projects, but your last resort with old projects, unless you know in advance that a non-critical script like Facebook's Share Button is slowing down your website.