We need to update the cache-control header when serve out a cached response to make sure we subtract the elapsed time, for example:
First response at 02:00:00
Date: 02:00:00
Expires: 02:01:00
Cache-Control: max-age=60
Second response at 02:00:30 (cached)
Expires: 02:01:00
Cache-Control: max-age=60
^^ max-age should now be 30, not 60
Good thinking @eschwartz