close #28: refresh graph if younger than cache