fragment caching gem with smart cache expiry