In case someone is interested in a concrete example, I first learned about caching time by discovering this package in my dependencies:
https://hackage.haskell.org/package/auto-updateIts README basically says instead of having every web request result in a call to get current time, it instead creates a green thread that runs every second, updating a mutable pointer that stores the current time.