我想象的是一種非常常見的情況,我期望能夠輕鬆解決這個問題 - 帶有UICollectionView的應用程序,每個單元中的圖像都是從API中獲取的通過http/https在Web服務器上。在UICollectionView和UITableView中優化預加載/預取圖像
我試圖實施iOS 10的prefetching in UICollectionView,以便提前請求可能需要的圖像。
在我看來,有應滿足最優預取各種要求:
- 這實際上是立即要求應始終上述推測預取優先圖像取,即使圖像已經在一個隊列被提取。
- 當iOS告訴我們一個特定的圖像不再需要被預取時,它應該從預取隊列中移除(並且只有它)。
- 如果請求圖像,應始終發送圖像,除非/取消所有/請求(如果在多個單元格或多個視圖控制器中使用一個圖像,則容易出錯)。
- 如果調用了didEndDisplaying,則應該中止優先級提取(但是,如果請求預取並且未取消,應該可能將該映像留在隊列中的優先級較低)。
- 簡單地涉及圖像加載的各種常見要求 - 例如。不要使用預取請求淹沒底層系統,最終會導致帶寬和服務器插槽遠離立即需要的映像。
我看像SDWebImage和Kingfisher現有的各種庫,並感到驚訝的是,似乎沒有要任何方式與任何庫輕鬆滿足上述要求。例如,SDWebImage不符合第二個要求 - 您只能使用cancel all prefetching,或者您必須爲每個圖像創建一個預先獲取器(這意味着各種其他SDWebImage功能,例如限制併發請求的數量,提取的圖像 - 即需求5 - 不再有效。)
這真的是一個難題嗎?我錯過了一些明顯的解決方案?我是否超越了要求?