The science is pretty much: Your website's speed will be bound by database I/O across the board. The database is the slowest interaction in a request.
RAM isn't a generic bottleneck unless you're doing something wrong like buffering large file uploads into server memory instead of streaming them. But that's pretty much N/A for you.
So, the science becomes: Cache everything that you can so you avoid database requests.
If your ecommerce homepage displays the 10 top-selling items, you shouldn't be running this every time someone loads the page:
SELECT * FROM products ORDER BY amount_sold DESC LIMIT 10
Ideally, you'd run that once and write it to "index.html". Then you server will just serve up "index.html" instead of hitting your database, and serving up static html files is blazing fast. That's literally what the popular Wordpress plugins do -- write everything into .html files and only update them when, say, you add/edit a post.
Doing this by hand is pretty non-trivial unless you have some programming experience, but frameworks (including your ecommerce platform) generally have cache settings baked in.
Buying more RAM and CPU won't increase the speed of your new website. Those two seconds the user has to wait is caught up in data/network transports, like making the request to download your jQuery file hosted on Google, loading the products from the database, and the general latency between themselves and your shitty China server.
I'd look into a performance analytics tool like the god-tier
Web Application Performance Management (APM) : New Relic. It shows you exactly where bottlenecks are like which DB queries are long-running. It breaks the response time into network, database, and rendering.