In the Shiny framework we think less about short-lived HTTP requests, and more about long-lived (websocket) sessions. Reactive expressions cache their results within or across sessions, depending on where they are declared (this is just a natural result of R's lexical scoping).
http://rstudio.github.io/shiny/tutorial/#scoping