web圖片緩存
A. SDWebImage清理緩存處理
SDWebImage對圖片的緩存分兩種,一種是緩存到磁碟上,一種是御殲彎緩存在內存中。在載入圖片時,首先會從內存中尋找緩存圖片,如果沒有再從磁碟緩存中尋找,實在沒有才會從網路請求圖片。既然有緩存,那就免不了對緩存的清理,不然一直緩存不清鎮悶理,會導致內存暴漲和磁碟空間的大量佔用。
在使用SDWebImage載入圖片的時候 其實已經初始化過SDImageCache單例了。在SDImageCache單例里添加了幾個通知:
這三個通知分別是在app收到內存警告時清理緩存,在app將要退出時 刪除舊的緩存文件,還有在app進入後台後,刪除舊的緩存文件。也就是說,默認情況下SDWebImage已經為我們做了一些緩存的清理了。
SDImageCache提供了一個動態控制最大緩存圖片像素數量的方法。像素和內存單位不同,下面我設置了最大像素為1000 * 1000 * 30 px 大概相當於幾十兆的內存大小。這樣我的app里緩存在內存中的的圖片大小就會控制在幾十兆改碧的范圍內。
[SDImageCache sharedImageCache].maxMemoryCost = 1000 * 1000 * 30;
在app回到後台和收到內存警告開始清理圖片緩存時,會將磁碟里超過該值的緩存圖片清理掉。
下面我設置的為最大50M的緩存空間
[SDImageCache sharedImageCache].config.maxCacheSize = 1024 * 1024 * 50;
B. web開發方面會遇到哪些緩存分別如何優化
Web緩存定義:
Web緩存遊走於伺服器和客戶端之間,這個伺服器可能是源伺服器(資源所駐留的伺服器Add),數量可能是1個或多個。
Web緩存就在伺服器-客戶端之間搞監控,監控請求,並且把請求輸出的內容(例如html頁面、 圖片和文件)(統稱為副本)另存一份,然後,如果下一個請求是相同的URL,則直接請求保存的副本,而不是再次麻煩源伺服器。
Web緩存的2個主要原因:
降低延遲:緩存離客戶端更近,因此,從緩存請求內容比從源伺服器所用時間更少,呈現速度更快,網站就顯得更靈敏。
降低網路傳輸:副本被重復使用,大大降低了用戶的帶寬使用,其實也是一種變相的省錢(如果流量要付費的話),同時保證了帶寬請求在一個低水平上,更容易維護了。
Web緩存的類型:
瀏覽器緩存
在任何現代瀏覽器上(如IE, FireFox, Chrome)折騰清除隱私數據的對話框,你很可能會注意到「緩存」這個設置項。代理伺服器緩存
Web代理伺服器使用同樣的緩存原理,只是規模更大。代理以同樣的方式服務千萬用戶,大公司和ISP經常在他們的防火牆或者單獨的設備(也被稱為中介(intermediaries))上架設代理緩存。網關緩存
也被稱為「反向代理緩存」或「替代緩存」。網關緩存同樣是起中介作用的,不過不是網路管理員部署的,而多半是網站管理員(公司專門的運維工程師、或UED或程序組某人Add)部署,這樣更容易擴展與維護。