圖片快取
方案一:無沙盒
- 從快取取圖,並顯示
- 如快取無圖,則下載
- 下載完後,存入快取,並顯示
方案二:有沙盒
- 從快取取圖,並顯示
- 如快取無圖,從沙盒取圖、顯示,並存入快取
- 如沙盒無圖,則下載
- 下載完後,先存入快取、顯示,再存入沙盒
具體實現
/**
self.apps = @[app1, app2, app3, ...];
app1 = @{@"name":@"...", @"icon":@"http://p16.qhimg.com/dr/34_5/fo2489234n34k545l234.png", @"download":@"..."};
**/
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
... ...
JKYApp *app = self.apps[indexPath.row];
/**1 先從記憶體快取中取出圖片 **/
UIImage *image = self.imageCache[app.icon];
if (image) { /**2 快取有,則載入 **/
cell.imageView.image = image;
} else { /**3 快取無,則下載 **/
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]];
cell.imageView.image = [UIImage imageWithData:data];
/**4 存到字典中 **/
self.imageCache[app.icon] = cell.imageView.image;
/**5 存到沙盒中 **/
//5.1 獲取沙盒Library/Caches路徑
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCacheDirectory, NSUserDomainMask, YES) firstObject];
//5.2 獲取檔名
NSString *fileName = [app.icon lastPathComponent];
//5.3 合併為檔案全路徑
NSString *file = [caches stringByAppendingPathComponent:fileName];
//5.4 第二個引數YES(原子性):當檔案未寫完出錯了,則該檔案不會殘留
// NO(費原子性):當檔案未寫完出錯了,則該檔案會殘留在沙盒
//5.5 存到沙盒中
[data writeToFile:file atomically:YES];
}
}
/*說明:
沙盒檔案結構:
1. Documents:手機連到itunes後,會自動備份到蘋果伺服器。注:蘋果不允許下載的大檔案放在這裡,否則,應用將可能被拒絕通過稽核。
2. Library
- Caches:存放下載的檔案
- Preference:偏好設定
3. tmp:臨時
*/
相關文章
- React Native圖片快取元件React Native快取元件
- Android圖片快取框架GlideAndroid快取框架IDE
- Swift iOS : WebView快取圖片的方法SwiftiOSWebView快取
- BlueHost主機網站圖片快取刪除教程網站快取
- 關於瀏覽器快取問題(圖片更換後,頁面仍優先讀取快取)瀏覽器快取
- 微信小程式 實現網路圖片本地快取微信小程式快取
- 開源框架——圖片載入和快取方案總結框架快取
- offscreenCanvas+worker+IndexedDB實現無感大量圖片快取CanvasIndex快取
- Android 圖片載入快取問題:為什麼你的Glide快取沒有起作用?Android快取IDE
- 讀取本地圖片地圖
- 圖解HTTP快取圖解HTTP快取
- 圖解 HTTP 快取圖解HTTP快取
- 微信小程式根據本地快取圖片路徑,生成縮圖的方法微信小程式快取
- mPaaS 3.0 多媒體元件釋出 | 支付寶百億級圖片元件 XMedia 錘鍊之路(圖片快取篇)元件快取
- Java 圖片裁剪,擷取Java
- AotucCrawler 快速爬取圖片
- windwos清理圖示快取快取
- iOS 獲取視訊圖片iOS
- 獲取本地圖片/視訊地圖
- 求擷取圖片等比公式公式
- 【API】隨機獲取圖片API隨機
- 爬取微博圖片資料存到Mysql中遇到的各種坑mysql儲存圖片爬取微博圖片MySql
- 爬取愛套圖網上的圖片
- 快取穿透、快取擊穿、快取雪崩、快取預熱快取穿透
- 獲取網路圖片的大小
- JavaScript獲取背景圖片定位值JavaScript
- python opencv讀取網路圖片PythonOpenCV
- js擷取影片的封面圖片JS
- Java爬蟲批量爬取圖片Java爬蟲
- RecyclerView快取原理,有圖有真相View快取
- 快取穿透、快取擊穿、快取雪崩快取穿透
- 快取穿透、快取雪崩、快取擊穿快取穿透
- Redis快取擊穿、快取穿透、快取雪崩Redis快取穿透
- [Redis]快取穿透/快取擊穿/快取雪崩Redis快取穿透
- HTTP快取——協商快取(快取驗證)HTTP快取
- Mybatis 一級快取和二級快取原理區別 (圖文詳解)MyBatis快取
- Excel 讀取圖片並獲取儲存路徑Excel
- 快取穿透 快取雪崩快取穿透
- 快取問題(一) 快取穿透、快取雪崩、快取併發 核心概念快取穿透