User-centric optimization of caching and recommendations in edge cache networks