2014-01-05 46 views
12

我的應用程序的webView加載一個頁面,我注入了一些javascript,爲我自動點擊並添加一個項目到我的願望清單。對於這樣的事情,你會推薦使用數據會話還是臨時會話來加載頁面?速度對我來說很重要,我試圖在Objective-C(yupp,甚至毫秒)中儘可能多地進行優化。iOS:數據會話與短暫會話

該頁面基本上加載了一個產品頁面,所以除了實際的產品以外,其他的東西總是相同的(背景視圖,網站菜單欄,按鈕圖像等)。現在我正在使用NSURLConnection,並且我試圖更新我的代碼來使用NSURLSession。

回答

1

我想你會使用一個默認會話,因爲它希望它將數據緩存到磁盤。一些短暫的會話不會

瓶頸幾乎總是IO,所以當數據不改變時你想要緩存。 對於快速鏈接數據,這將不值得,但你明確地說,該數據不會改變

+0

,你甚至可以說,你可以使用一個數據會話保持下載時你甚至沒有運行=>感知性能的PAE可能會更高然後 –

13

默認會話行爲相似的其他基金方法可用於下載的URL。他們使用永久性的基於磁盤的緩存並將憑證存儲在用戶的鑰匙串中。

  1. 使用全局或共享cookie,緩存和憑證存儲對象的配置。行爲與NSURLConnection類似。

  2. 共享會話使用全球單憑證,高速緩存和cookie的存儲對象。 [:隊列:completionHandler:NSURLConnection的sendAsynchronousRequest]這可以代替使用現有+代碼中使用

短命會話不任何數據存儲到磁盤;所有的緩存,憑證存儲等都保存在RAM中並與會話綁定。因此,當您的應用程序使會話失效時,它們會自動清除。

  1. 專用會話配置不會保留cookie,緩存和憑證存儲對象。如名稱所示,配置設置爲短暫活動,並在會話失效時被刪除。

背景會話類似於默認會話,所不同的是一個獨立的進程處理所有的數據傳輸。背景會話具有一些附加的限制,在所述的「Background Transfer Considerations」。

  1. 背景會話類似於默認會話,但是它可以被用來代表一個掛起的應用的執行網絡操作,某些約束條件。

  2. 類似違約會議,但上傳,甚至當應用程序處於暫停狀態,可以進行數據的下載。從Apple Doc

    //Default session 
    + (NSURLSessionConfiguration *)defaultSessionConfiguration; 
    
    //Ephemeral 
    + (NSURLSessionConfiguration *)ephemeralSessionConfiguration; 
    
    //Background 
    + (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier; 
    

    NSURLSession任務和委託

    下面圖像

參考介紹類型NSURLSession任務和他們的層次。

More Details

enter image description here

+0

幾乎1:1引用文檔沒有提到src,也沒有爲回答這個問題量身定做 –