Previously I simply passed the current bounds to the server, it got the data I needed and passed it back - all was good. The issue was scalability, as hundreds of requests are made these bounds were very unique even if the data they wanted to show was the same. The solution? Create and oversize a standard grid bounds. What this does is makes many more requests identical. It also has a side benefit that slight movements of the map don't even a trigger a new data request.