Yes. Caching.
There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton
While it is true that your application should be stateless, no one will kill you for adding a cache layer (which does not represent state, but rather the data). Such a cache layer highly depends on what kind of data you are handling and how "fresh" it has to be. It also is vital that you always update the data in your data store (for example database)
What I did for one of my applications was adding in-memory caching (just a variable in Node.JS). Basically the server will fetch all data and store it in order to fetch it faster for serving it to clients. At the same time, I added something like an ETag to the data. The client requests the data and transmit the ETag if available. The server will compare the ETags and either just send a "not changed" response or send over whatever it has in its cache. The cache is never invalidated, but changed on certain API requests (together with the database). That kind of thing works well for my application, but depending on what you need you might have to invalidate your data based on a timeout (for example every hour). Do the invalidation in the background. Always serve fast!
btw, the described cache boosted performance from a 2 minutes wait-time to a some 50ms wait-time. I admit, the data store is very slow, but this caching technique was a speed-up of an unexpected multitude.