Kingfisher只下载并缓存图像一次,并在每个单元格中使用相同的图像,而不下载新的图像。我尝试过使用.ForceRefresh选项,但它不起作用。
代码:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! ImageCollectionViewCell
let imageURL = NSURL(string: "https://source.unsplash.com/random")
cell.imageView.kf_setImageWithURL(imageURL!)
return cell
}
答案 0 :(得分:1)
在玩了翠鸟之后,我得出结论,问题根本不在于缓存。 .ForceRefresh
工作正常,即使使用单独的缓存位置也无法解决问题。
我认为问题在于unsplash处理对其"https://source.unsplash.com/random"
端点的请求的方式。因为Kingfisher的所有请求几乎同时发出,因此unsplash会为您的所有请求提供相同的照片(可能是他们最终的优化)。
通过向
发出请求,您可以获得更多随机性 NSURL(string: "https://source.unsplash.com/random?page=" + String(indexPath.row))
(也许是指即将推出的随机照片?),但即便如此,我也注意到有些照片有时出现两次。据我所知,这是最成功的方法。
幸运的是,至少通过这种方式你仍然可以利用翠鸟的缓存。