iOS App 圖片檔案快取機制

更新於 發佈於 閱讀時間約 3 分鐘

Sandbox 架構

app sandbox

app sandbox

/Documents:主要用於儲存用戶生成的數據或者不能重新創建的數據。這些可能包括由你的應用程式創建的文件、從服務器下載的文件、用戶在應用程式中創建或修改的數據等。

這些數據在應用程式的生命週期中是持久保存的,即使應用程式被終止或者系統重啟,這些數據也會保留。此外,如果你的應用程式啟用了 iCloud,那麼存儲在 Documents 目錄中的數據可以被自動備份到 iCloud,這樣用戶就可以在多個設備上訪問這些數據。

/Caches:此目錄用於存儲可以重新生成或下載的數據,如圖片快取、數據快取等。當設備的儲存空間不足時,系統可能會清除此目錄中的數據。然而,這種清理不是即時的,所以如果你的應用程式在後台運行,或者在一段時間內沒有被使用,這些快取數據可能仍然存在。

/tmp:此目錄用於存儲需要立即使用,但不需要長期保存的數據。當你的應用程式結束運行後,系統可能會清除此目錄中的數據。因此,你不應該在此目錄中存儲任何需要長期保存的數據。

一般來說,圖片、檔案快取應該放在/Caches裡。

SDWebImage套件快取機制

我用的SDImage,本身就有內建快取機制。

存放的地點也在/Caches資料夾裡面

~/Library/Caches/com.hackemist.SDImageCache

raw-image

他允許客製化設置最大快取大小和最長快取時間。當快取大小超過這個限制,或者某個圖像的快取時間超過時間,SDWebImage 會自動清理這些圖像。

可以使用 SDImageCache 類的 config 屬性來設置這些值,例如:

SDImageCache.shared.config.maxDiskSize = 250 * 1024 * 1024 // 250 MB
SDImageCache.shared.config.maxDiskAge = 60 * 60 * 24 * 7 // 一周

預設值是一週,跟0MB。

也可以手動清理快取,使用 SDImageCache 類的 clearMemory() ,clearDisk(onCompletion:) 和 deleteOldFiles(completionBlock:) 方法。

另外SDImageCache清理的時間也是跟著UIApplication的週期,去檢查有沒有過期。

didEnterBackground

didEnterBackground

willTerminate

willTerminate

shouldRemoveExpiredDataWhenEnterBackground

shouldRemoveExpiredDataWhenTerminate

預設都是true

自行管理快取

由於有一些圖片、檔案是用Alamofire下載,沒辦法用SDWebImage管理。

目前我採用的方案會把圖片檔案下載後集中存在/Caches裡,做一些時間點判斷清除。因為如同上面講的/Caches雖然有可能被系統清除,但也有可能都沒清,造成App越來越大。

1. 全清空:版本更新後,使用者登出

  1. 超過一個容量大小(ex. 2GB):每次啟動時判斷,超過全清空
avatar-img
7會員
35內容數
紀錄iOS開發上遇到的問題或是一些流程筆記。主要都是Swift。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Michelle Chen的沙龍 的其他內容
SwiftUI的TabView實在太好用啦!我要大大的推廣他ლ(╹◡╹ლ) 換頁+小圓點滑動 無限自動輪播 底部Tabbar
這個浮誇標題是ChatGPT幫我想的😊 圖也是DALL幫我產的, AI萬歲! GCD也是面試必問題啊!我答超爛的,只會用背景呼叫API+切Main Thread更新畫面,今天就來認真了解。 GCD是什麼? 先來問ChatGPT什麼是GCD? GCD,全名 Grand Central Dis
字數算法 = string.count? 在swift算一個string的字數時候,很直覺的會想到用.count來算 let s = "這是幾個字呢".count print(s.count) // 6 毫無疑問的安心信賴6個字 表情符號的場合 let emoji = "😂" print
Xcode15的 @escaping closure裡解包後的[weak self]不必再寫 self了!! 用一個範例class Test來實驗,裡面只有一個變數a跟一個testClosure回"test",再用callTestClosure把變數a改成"test" 編譯正常!變數a成功被改成
一樣先來看官方文件 A view controller that provides access to documents or destinations outside your app’s sandbox. 其實就是讓你去讀取檔案App的東西 有兩種模式,Don’t copy the do
iCloud+的服務 只有付錢的人才能用,免費仔如我從來沒聽過😗 簡介 通常你在瀏覽網頁時,網路供應商和你所造訪的網站可以看到網頁流量所包含的資訊(例如 DNS 記錄和 IP 位址)。此資訊可用來判斷你的身分,並建立描述檔來記錄你的位置以及往後的瀏覽記錄。 「iCloud 私密轉送」的設計旨
SwiftUI的TabView實在太好用啦!我要大大的推廣他ლ(╹◡╹ლ) 換頁+小圓點滑動 無限自動輪播 底部Tabbar
這個浮誇標題是ChatGPT幫我想的😊 圖也是DALL幫我產的, AI萬歲! GCD也是面試必問題啊!我答超爛的,只會用背景呼叫API+切Main Thread更新畫面,今天就來認真了解。 GCD是什麼? 先來問ChatGPT什麼是GCD? GCD,全名 Grand Central Dis
字數算法 = string.count? 在swift算一個string的字數時候,很直覺的會想到用.count來算 let s = "這是幾個字呢".count print(s.count) // 6 毫無疑問的安心信賴6個字 表情符號的場合 let emoji = "😂" print
Xcode15的 @escaping closure裡解包後的[weak self]不必再寫 self了!! 用一個範例class Test來實驗,裡面只有一個變數a跟一個testClosure回"test",再用callTestClosure把變數a改成"test" 編譯正常!變數a成功被改成
一樣先來看官方文件 A view controller that provides access to documents or destinations outside your app’s sandbox. 其實就是讓你去讀取檔案App的東西 有兩種模式,Don’t copy the do
iCloud+的服務 只有付錢的人才能用,免費仔如我從來沒聽過😗 簡介 通常你在瀏覽網頁時,網路供應商和你所造訪的網站可以看到網頁流量所包含的資訊(例如 DNS 記錄和 IP 位址)。此資訊可用來判斷你的身分,並建立描述檔來記錄你的位置以及往後的瀏覽記錄。 「iCloud 私密轉送」的設計旨
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
iCloud 照片是一種雲端照片儲存服務,可以將您的照片和影片備份到雲端, 並在您的所有裝置上保持最新。但是,如果您從 iCloud.com 刪除照片或影片, 它們也會從所有開啟 iCloud 照片的裝置中刪除。 因此,在刪除照片或影片之前, 請務必確認您已經將它們備份到本地裝置或其他雲端儲
Thumbnail
iCloud 照片是一種雲端照片儲存服務,可以將您的照片和影片備份到雲端, 並在您的所有裝置上保持最新。但是,如果您從 iCloud.com 刪除照片或影片, 它們也會從所有開啟 iCloud 照片的裝置中刪除。 因此,在刪除照片或影片之前, 請務必確認您已經將它們備份到本地裝置或其他雲端儲
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
如果所有裝置都可以透過單一檔案管理器統一管理這會有多方便? 紅茶最近在Github上找到專案,名叫Spacedrive。這個專案的宗旨,開發團隊希望未來只需要一個App就可以連接所有裝置和雲端空間,來更方便的管理自己手上的檔案。
Thumbnail
本教學適用於小米系(Xiaomi、Redmi與 Poco)的手機,其他手機不會內建小米相簿。 緣由: 小米相簿基本上會快取手機裡所有圖片的縮圖,因此當手機裡照片與下載的圖片越多,快取起來佔用的空間就會相當可觀,圖片若有上萬張,快取檔也會變成數GB級的成長,好玩的是當你想要清除這些快取時,小米說這
※ 什麼是快取 (Cache)[kash]?快取 (Cache) 的機制為何? 什麼是快取 (Cache)? 快取(Cache)是一種將資料存儲在特定位置以便快速檢索的技術。目的是為了彌補 Database 在業務邏輯複雜且數據量龐大時的不足,基本原理是將可重複使用的資料,也就是最常或最近使用的
Thumbnail
我最近在思考關於記憶體的最佳存放,在哪裡會最好 得出來的答案 就是...必須用笨方法 但笨方法最為安全 1.定期刪除信箱和手機裡無用影片和截圖或垃圾訊息 2.定期分類自己的文件和圖檔 3.定期備份資料-放在自己常用的電腦裡或另外買隨身碟和硬碟 4.可以暫時存在雲端或GOOGLE文件
Thumbnail
抓取對象檔案,自動進行壓縮處理,壓縮後產出一個壓縮檔案,如此便可節省硬碟使用空間
Thumbnail
引言 在現今迅速發展的科技環境下,資料克隆技術已成為數據管理中不可或缺的一環。在日常生活和商業運營中,我們經常需要處理大量數據的複製、備份和遷移,而SSD克隆技術應運而生,提供了高效、快速和方便的解決方案。 目錄 SSD克隆的原理 SSD克隆的方法 SSD克隆機器的運作 軟體 vs. 專
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
iCloud 照片是一種雲端照片儲存服務,可以將您的照片和影片備份到雲端, 並在您的所有裝置上保持最新。但是,如果您從 iCloud.com 刪除照片或影片, 它們也會從所有開啟 iCloud 照片的裝置中刪除。 因此,在刪除照片或影片之前, 請務必確認您已經將它們備份到本地裝置或其他雲端儲
Thumbnail
iCloud 照片是一種雲端照片儲存服務,可以將您的照片和影片備份到雲端, 並在您的所有裝置上保持最新。但是,如果您從 iCloud.com 刪除照片或影片, 它們也會從所有開啟 iCloud 照片的裝置中刪除。 因此,在刪除照片或影片之前, 請務必確認您已經將它們備份到本地裝置或其他雲端儲
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
如果所有裝置都可以透過單一檔案管理器統一管理這會有多方便? 紅茶最近在Github上找到專案,名叫Spacedrive。這個專案的宗旨,開發團隊希望未來只需要一個App就可以連接所有裝置和雲端空間,來更方便的管理自己手上的檔案。
Thumbnail
本教學適用於小米系(Xiaomi、Redmi與 Poco)的手機,其他手機不會內建小米相簿。 緣由: 小米相簿基本上會快取手機裡所有圖片的縮圖,因此當手機裡照片與下載的圖片越多,快取起來佔用的空間就會相當可觀,圖片若有上萬張,快取檔也會變成數GB級的成長,好玩的是當你想要清除這些快取時,小米說這
※ 什麼是快取 (Cache)[kash]?快取 (Cache) 的機制為何? 什麼是快取 (Cache)? 快取(Cache)是一種將資料存儲在特定位置以便快速檢索的技術。目的是為了彌補 Database 在業務邏輯複雜且數據量龐大時的不足,基本原理是將可重複使用的資料,也就是最常或最近使用的
Thumbnail
我最近在思考關於記憶體的最佳存放,在哪裡會最好 得出來的答案 就是...必須用笨方法 但笨方法最為安全 1.定期刪除信箱和手機裡無用影片和截圖或垃圾訊息 2.定期分類自己的文件和圖檔 3.定期備份資料-放在自己常用的電腦裡或另外買隨身碟和硬碟 4.可以暫時存在雲端或GOOGLE文件
Thumbnail
抓取對象檔案,自動進行壓縮處理,壓縮後產出一個壓縮檔案,如此便可節省硬碟使用空間
Thumbnail
引言 在現今迅速發展的科技環境下,資料克隆技術已成為數據管理中不可或缺的一環。在日常生活和商業運營中,我們經常需要處理大量數據的複製、備份和遷移,而SSD克隆技術應運而生,提供了高效、快速和方便的解決方案。 目錄 SSD克隆的原理 SSD克隆的方法 SSD克隆機器的運作 軟體 vs. 專