緩存怎么清理
成都創(chuàng)新互聯(lián)-專業(yè)網站定制、快速模板網站建設、高性價比古縣網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式古縣網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋古縣地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。
方法/步驟
我們在用電腦很久時,電腦就會留下一些用過的痕跡,這個就叫做緩存,緩存有很多種比如來自網頁和windows等
其實清理緩存有或多種,可以利用電腦自帶的工具清理還可以使用應用軟件來清理,下面就來介紹幾個辦法
方法一:首先選擇你要清理的磁盤。如C盤首先選擇c盤的屬性,然后選擇磁盤清理
或者利用瀏覽器的自帶功能來清理,工具然后是刪除,這一方法主要是清除瀏覽器中的緩存
最后就是利用軟件啦,可以使用魔方等,點擊清理就可以啦~
方法一:一般將服務器第一次返回的數據保存在沙盒里面。這樣在手機斷網的情況下可以從本地讀取數據了。
1.保存到沙盒的代碼:
[plain] view
plaincopy
+ (void)saveCache:(int)type andID:(int)_id andString:(NSString *)str;
{
NSUserDefaults * setting = [NSUserDefaults standardUserDefaults];
NSString * key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];
[setting setObject:str forKey:key];
[setting synchronize];
}
2.讀取本地沙盒的代碼
讀取之前首先根據type和Id判斷本地是否有
[plain] view
plaincopy
+ (NSString *)getCache:(int)type andID:(int)_id
{
NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];
NSString *key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];
NSString *value = [settings objectForKey:key];
return value;
}
如果沙盒里面有數據
[plain] view
plaincopy
NSString *value = [Tool getCache:5 andID:self.QiuTime];
if (value) {
NSDictionary *backdict = [value JSONValue];
if ([backdict objectForKey:@"items"]) {
NSArray *array=[NSArray arrayWithArray:[backdict objectForKey:@"items"]];
for (NSDictionary *qiushi in array) {
QiuShi *qs=[[[QiuShi alloc]initWithDictionary:qiushi] autorelease];
[self.list addObject:qs];
}
}
[self.tableView reloadData];
}
[self.tableView tableViewDidFinishedLoadingWithMessage:@"數據全部加載完了.."];
self.tableView.reachedTheEnd = YES;
方法二:使用ASIHTTPRequest和ASIDownloadCache實現(xiàn)本地緩存
1、設置全局的Cache
在AppDelegate.h中添加一個全局變量
[plain] view plaincopy
@interface AppDelegate : UIResponder
{
ASIDownloadCache *myCache;
}
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic,retain) ASIDownloadCache *myCache;
在AppDelegate.m中的- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加如下代碼
[plain] view plaincopy
//自定義緩存
ASIDownloadCache *cache = [[ASIDownloadCache alloc] init];
self.myCache = cache;
[cache release];
//設置緩存路徑
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
[self.myCache setStoragePath:[documentDirectory stringByAppendingPathComponent:@"resource"]];
[self.myCache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy];
在AppDelegate.m中的dealloc方法中添加如下語句
[plain] view plaincopy
[myCache release];
到這里為止,就完成了全局變量的聲明。
2、設置緩存策略
在實現(xiàn)ASIHTTPRequest請求的地方設置request的存儲方式,代碼如下
[plain] view plaincopy
NSString *str = @"";
NSURL *url = [NSURL URLWithString:str];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
//獲取全局變量
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
//設置緩存方式
[request setDownloadCache:appDelegate.myCache];
//設置緩存數據存儲策略,這里采取的是如果無更新或無法聯(lián)網就讀取緩存數據
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
request.delegate = self;
[request startAsynchronous];
3、清理緩存數據
我在這里采用的是手動清理數據的方式,在適當的地方添加如下代碼,我將清理緩存放在了應用的設置模塊:
[plain] view plaincopy
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[appDelegate.myCache clearCachedResponsesForStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
這里清理的是ASICachePermanentlyCacheStoragePolicy這種存儲策略的緩存數據,如果更換其他的參數的話,即可清理對應存儲策略的緩存數據。
如果實現(xiàn)接口數據沒有變化使用緩存的功能?
拿到本地數據摘要傳給后臺,后臺判斷數據是否發(fā)生了變化,如果沒有變化就不給返回這個接口的大量數據,如果發(fā)生了變化就返回這個接口的大量數據。
筆者性懶,腹中無墨
app嵌html屢見不鮮, 本文描述加載簡單的html網頁。
首先說明需求: 有網的狀態(tài)直接從獲取html網頁并且緩存, 無網狀態(tài)先從緩存讀取html, 若不成功則加載本地html文件, 并且將本地html文件寫入緩存, 以便下次讀取.
1.加載html網頁, viewWillAppear或者viewDidLoad.
以下QAUrl均為html完整的url
2.若成功, 就在成功的代理方法里, 將網頁端html寫入緩存
3.不成功,在失敗的代理方法里, 加載磁盤緩存或者本地html,其中isNetConnected是指是否連接到互聯(lián)網, 默認是true,加載失敗后置為false.
fileprivate var isNetConnected: Bool = true // 是否連接到互聯(lián)網
4.同樣,此次成功后,在代理方法里,將本地html文件寫入緩存
5.代理方法的里很簡潔
6.需要注意的是
(1)拼接緩存地址時, 如果html的URL類似于" ",不能作為地址拼接,否則無法緩存.
(2)筆者將拼接地址統(tǒng)一寫成"/Caches/feedback.html",若有新的緩存,則地址被覆蓋,不會導致緩存多個相同文件,一般無需清理或者導致內存警告
(3)本文不涉及緩存圖片, js交互等問題
7.補充:
開發(fā)過程中,筆者又遇到了一個問題,有網的情況下,網頁也可能出現(xiàn)加載不成功.這個時候如果只是加載網頁就會什么都沒有.所以在viewWillAppear或者viewDidLoad里應該有個判斷
如果請求request返回的finish是true即成功,則加載html網頁,不成功則加載緩存.
NSCache是蘋果系統(tǒng)提供的一個緩存框架,用法和NSMutableDictionary 相似。都是通過setValue: forKey: 設置值、和objectForKey 取值,
但還是有區(qū)別:
設置代理
需要類遵守協(xié)議NSCacheDelegate
把數據寫入NSCache緩存
讀取內存緩存NSCache
刪除 NSCache數據
代理方法
即將回收清理cache的時候調用改方法
1.獲取根目錄
let homePath = NSHomeDirectory()
2.獲取其他目錄
獲取沙盒目錄路徑可以通過 NSSearchPathForDirectoriesInDomains 方法,該方法有三個數:
本文介紹在iOS開發(fā)中,Swift實現(xiàn)清除緩存功能。主要分為統(tǒng)計緩存文件大小和刪除緩存文件兩個步驟: