Wasn't immediately clear why this would need recursion, but I guess that's to allow for caching of only a specific path using the same logic as caching all paths? Perhaps it would be clearer with separate "create_cache" and "create_page_cache" methods, or something? Let me know if I should explain more what I mean.