There is a reflex, when a real-time system is under load, to conclude that caching is not available because the data is live. That is true of some of the data and badly wrong about most of it.
Sorting your data by how fast it actually changes is one of the higher-leverage exercises available.
Never cache
Anything where serving a stale value produces a wrong outcome rather than an old one. Current driver positions. Whether a driver is available. Whether a ride has already been accepted.
Caching availability for even a few seconds means two riders can be offered the same driver. That is not a performance trade-off, it is a correctness failure wearing one.
Cache briefly
Values that change continuously but where small staleness is acceptable and the computation is expensive.
- Route and travel-time estimates between common points, where traffic shifts over minutes rather than seconds.
- Demand levels for a zone, which are inherently aggregate and smoothed.
- Aggregate counts that drive operational dashboards.
Short time-to-live caching here removes a surprising amount of repeated work, because many requests ask about the same few places at the same time.
Cache aggressively
Reference data that changes on human timescales: geofence and zone definitions, pricing rules, vehicle categories, map tiles, service area boundaries.
This is the category teams most often leave uncached, because it sits next to live data and inherits an assumption of volatility it does not deserve. Zone boundaries change when someone in operations edits them, which is not often.
Cache per request
The cheapest and most overlooked layer: within the handling of a single request, do not fetch the same thing twice. A dispatch decision that looks up the same zone configuration for each candidate driver is doing identical work repeatedly for no reason.
This needs no infrastructure and no invalidation strategy, because the cache dies with the request.
Start with the question
For every piece of data: how wrong is a value that is thirty seconds old? If the answer is 'slightly out of date', cache it. If the answer is 'it produces an incorrect decision', do not. That single question resolves most cases without debate.



