Sample: data loader with cache