本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領域,尤其涉及一種圖片緩存的方法。
背景技術(shù):
從網(wǎng)絡獲取圖片需要流量以及時間,如果每次顯示圖片都重新從網(wǎng)絡獲取,會嚴重影響用戶體驗。所以通常使用圖片緩存技術(shù),將圖片從網(wǎng)絡讀取后放入內(nèi)存空間中,再次顯示時先從內(nèi)存中查找圖片是否存在,如存在則直接顯示,不用從網(wǎng)絡重新獲取,減少網(wǎng)絡流量和等待時間,提升用戶體驗。
由于內(nèi)存空間容量有限,不可能無限制的緩存圖片,當內(nèi)存空間不足時,必須舍棄一些已緩存的圖片以便讓出空間緩存新的圖片。被舍棄的圖片有可能被再次使用,為了提高效率,需要算法挑選舍棄那些最不可能被再次使用的圖片,保留最有可能被再次使用的圖片。
現(xiàn)有的技術(shù)使用先進先出算法,按照時間順序舍棄最先緩存的圖片,即先進入內(nèi)存的圖片,先退出內(nèi)存。但是并不是先被添加的圖片被再次使用的概率就低,這種算法經(jīng)常將一些先被加載但是常用的圖片舍棄,造成效率降低。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的缺陷,提供一種圖片緩存的方法,避免了常用圖片被舍棄,提高了運行效率。
為實現(xiàn)上述目的,本發(fā)明提供了一種圖片緩存的方法,該方法包括以下步驟:
記錄每個圖片的屬性,包括緩存的添加時間、使用次數(shù)、最后使用時間、使用位置以及屏幕滑動方向;
計算圖片的屬性權(quán)重;
根據(jù)權(quán)重值大小對圖片進行取舍,權(quán)重值越大表示此圖片越重要,則保留在緩存中,權(quán)重值越小表示此圖片越不重要,則舍棄釋放空間用來存儲新的圖片。
進一步地,圖片的屬性具體為:
圖片的添加時間--圖片從網(wǎng)絡獲取后放入內(nèi)存空間時的時間;
使用次數(shù)--圖片被使用的次數(shù),每使用一次使用次數(shù)加1;
最后使用時間--圖片最后被使用的時間;
使用位置--由屏幕左上角開始,從上到下從左到右進行編號,記錄圖片最后被顯示的位置;
屏幕滑動方向--用戶當前滑動屏幕的方向。
進一步地,權(quán)重由圖片的添加時間、使用次數(shù)、最后使用時間、使用位置、屏幕滑動方向維度計算得出;其中,
圖片的添加時間:越早添加的圖片權(quán)重值越小,越晚添加的圖片權(quán)重值越大;
使用次數(shù):越少使用的圖片權(quán)重值越小,越多使用的圖片權(quán)重值越大;
最后使用時間:越早使用的圖片權(quán)重值越小,越晚使用的圖片權(quán)重值越大;
使用位置和屏幕滑動方向:
1)當向下滑動時,當前位置上方的圖片權(quán)重值小,當前位置下方的圖片權(quán)重值大,且離當前位置越近權(quán)重值越大;
2)當向上滑動時,當前位置上方的圖片權(quán)重值大,當前位置下方的圖片權(quán)重值小,且離當前位置越近權(quán)重值越大;
3)當向右滑動時,當前位置右方的圖片權(quán)重值大,當前位置左方的圖片權(quán)重值小,且離當前位置越近權(quán)重值越大;
4)當向左滑動時,當前位置左方的圖片權(quán)重值大,當前位置右方的圖片權(quán)重值小,且離當前位置越近權(quán)重值越大。
本發(fā)明技術(shù)方案帶來的有益效果:
采用本發(fā)明的方法,能夠多維度綜合計算圖片緩存的權(quán)重,在進行緩存置換時保留最可能被再次使用的圖片,舍棄最不可能被再次使用的圖片,避免了常用圖片被舍棄,提高了運行效率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1是本發(fā)明的方法流程圖;
圖2是本發(fā)明的實施例中屏幕與內(nèi)存初始狀態(tài)示意圖;
圖3是本發(fā)明的實施例中屏幕向上滑動后的狀態(tài)示意圖;
圖4是本發(fā)明的實施例中屏幕繼續(xù)向上滑動后的狀態(tài)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
由于內(nèi)存空間容量有限,不可能無限制的緩存圖片,當內(nèi)存空間不足時,必須舍棄一些已緩存的圖片以便讓出空間緩存新的圖片,本發(fā)明提出一種圖片緩存的方法,舍棄最不可能被再次使用的圖片,保留最有可能被再次使用的圖片,使緩存置換后對用戶影響最小。
本發(fā)明中每個在內(nèi)存中的圖片緩存都對應一個權(quán)重值,此權(quán)重值由添加時間、使用次數(shù)、最后使用時間、使用位置、屏幕滑動方向等維度計算得出。權(quán)重值越大表示此圖片越重要,在將來越可能被再次使用,需要保留在緩存中,權(quán)重值越小表示此圖片越不重要,在將來越不可能被再次使用,可以舍棄釋放空間用來存儲新的圖片。
如圖1所示為本發(fā)明的方法流程圖,具體實現(xiàn)方法為:
1.記錄每個圖片的屬性,包括緩存的添加時間、使用次數(shù)、最后使用時間、使用位置以及屏幕滑動方向。
添加時間:圖片從網(wǎng)絡獲取后放入內(nèi)存空間時的時間。
使用次數(shù):圖片被使用的次數(shù),每使用一次使用次數(shù)加1。
最后使用時間:圖片最后被使用的時間。
使用位置:由屏幕左上角開始,從上到下從左到右進行編號,記錄圖片最后被顯示的位置。
屏幕滑動方向:用戶當前滑動屏幕的方向。
2.計算圖片的屬性權(quán)重
權(quán)重由添加時間、使用次數(shù)、最后使用時間、使用位置、屏幕滑動方向等維度計算得出。
圖片的添加時間:越早添加的圖片權(quán)重值越小,越晚添加的圖片權(quán)重值越大。
使用次數(shù):越少使用的圖片權(quán)重值越小,越多使用的圖片權(quán)重值越大。
最后使用時間:越早使用的圖片權(quán)重值越小,越晚使用的圖片權(quán)重值越大。
使用位置和屏幕滑動方向:
1)當向下滑動時,當前位置上方的圖片權(quán)重值小,當前位置下方的圖片權(quán)重值大,且離當前位置越近權(quán)重值越大。
2)當向上滑動時,當前位置上方的圖片權(quán)重值大,當前位置下方的圖片權(quán)重值小,且離當前位置越近權(quán)重值越大。
3)當向右滑動時,當前位置右方的圖片權(quán)重值大,當前位置左方的圖片權(quán)重值小,且離當前位置越近權(quán)重值越大。
4)當向左滑動時,當前位置左方的圖片權(quán)重值大,當前位置右方的圖片權(quán)重值小,且離當前位置越近權(quán)重值越大。
3.對權(quán)重值越大表示此圖片越重要,在將來越可能被再次使用,需要保留在緩存中,權(quán)重值越小表示此圖片越不重要,在將來越不可能被再次使用,可以舍棄釋放空間用來存儲新的圖片。
本發(fā)明的具體實施如下:
1.一個圖片展示頁面,屏幕可以顯示三張圖片,內(nèi)存空間可緩存四張圖片。
2.如圖2所示,初始狀態(tài)屏幕中顯示A、B、C三張圖片。圖片A、B、C從網(wǎng)絡讀取后放入內(nèi)存。此時內(nèi)存中的緩存為A、B、C。
3.如圖3所示,當屏幕向上滑動,屏幕中顯示B、C、D三張圖片。圖片B、C從緩存中讀取,圖片D從網(wǎng)絡讀取后放入內(nèi)存。由于內(nèi)存還有空間,此時內(nèi)存中的緩存為A、B、C、D。
4.如圖4所示,當屏幕繼續(xù)向上滑動,屏幕中顯示C、D、E三張圖片,圖片C、D從緩存中讀取,圖片E從網(wǎng)絡讀取后放入內(nèi)存。由于內(nèi)存已滿,需要根據(jù)算法計算權(quán)重舍棄最不可能被再次用到的圖片緩存。
添加時間:A=1,B=2,C=3,D=4。
使用次數(shù):A=1,B=1,C=1,D=1。
最后使用時間:A=1,B=2,C=3,D=4。
使用位置和屏幕滑動方向:A=1,B=2,C=3,D=4。
最終權(quán)重:A=4,B=7,C=10,D=13。
舍棄權(quán)重最小的A,此時內(nèi)存中的緩存為B、C、D、E。
以上對本發(fā)明實施例進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。