Caching and CDNs: Placement, Invalidation, and Freshness