自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS開發(fā)ASIHTTPRequest數(shù)據(jù)壓縮

移動開發(fā) iOS
本文為大家介紹了iOS開發(fā)ASIHTTPRequest數(shù)據(jù)壓縮的內(nèi)容,其中包括使用gzip來處理壓縮的響應(yīng)數(shù)據(jù),怎樣設(shè)置apache的mod_deflate來使用gzip壓縮數(shù)據(jù),在ASIHTTPRequest中使用gzip,相應(yīng)數(shù)據(jù)的實(shí)時解壓縮,使用gzip壓縮request數(shù)據(jù)等等內(nèi)容。

使用gzip來處理壓縮的響應(yīng)數(shù)據(jù)

從0.9版本開始,ASIHTTPRequest會提示服務(wù)器它可以接收gzip壓縮過的數(shù)據(jù)。許多web服務(wù)器可以在數(shù)據(jù)被發(fā)送之前壓縮這些數(shù)據(jù)——這可以加快下載速度減少流量使用,但會讓服務(wù)器的cpu(壓縮數(shù)據(jù))和客戶端(解壓數(shù)據(jù))付出代價。總的來說,只有特定的幾種數(shù)據(jù)會被壓縮——許多二進(jìn)制格式的文件像jpeg,gif,png,swf和pdf已經(jīng)壓縮過他們的數(shù)據(jù)了,所以向客戶端發(fā)送這些數(shù)據(jù)時不會進(jìn)行g(shù)zip壓縮。文本文件例如網(wǎng)頁和xml文件會被壓縮,因為它們通常有大量的數(shù)據(jù)冗余。

怎樣設(shè)置apache的mod_deflate來使用gzip壓縮數(shù)據(jù)

apache 2.x以上版本已經(jīng)配備了mod_deflate擴(kuò)展,這使得apache可以透明地壓縮特定種類的數(shù)據(jù)。要開啟這個特性,你需要在apache的配置文件中啟用mod_deflate。并將mod_deflate命令添加到你的虛擬主機(jī)配置或者.htaccess文件中。

在ASIHTTPRequest中使用gzip

  1. - (IBAction)grabURL:(id)sender 
  2.   NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com"]; 
  3.   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  4.   // 默認(rèn)為YES, 你可以設(shè)定它為NO來禁用gzip壓縮 
  5.   [request setAllowCompressedResponse:YES]; 
  6.   [request startSynchronous]; 
  7.   BOOL *dataWasCompressed = [request isResponseCompressed]; // 響應(yīng)是否被gzip壓縮過? 
  8.   NSData *compressedResponse = [request rawResponseData]; // 壓縮的數(shù)據(jù) 
  9.   NSData *uncompressedData = [request responseData]; // 解壓縮后的數(shù)據(jù) 
  10.   NSString *response = [request responseString]; // 解壓縮后的字符串 

當(dāng)allowCompressedResponse 設(shè)置為YES時,ASIHTTPRequest將向request中增加一個Accept-Encoding頭,表示我們可以接收gzip壓縮過的數(shù)據(jù)。如果響應(yīng)頭中包含一個Content-Encoding頭指明數(shù)據(jù)是壓縮過的,那么調(diào)用responseData 或者responseString 將會得到解壓縮后的數(shù)據(jù)。你也可以通過調(diào)用rawResponseData來獲得原始未壓縮的數(shù)據(jù)。

相應(yīng)數(shù)據(jù)的實(shí)時解壓縮

默認(rèn)情況下,ASIHTTPRequest會等到request完成時才解壓縮返回的數(shù)據(jù)。若設(shè)置request的shouldWaitToInflateCompressedResponses 屬性為NO,ASIHTTPRequest將會對收到的數(shù)據(jù)進(jìn)行實(shí)時解壓縮。 在某些情況下,這會稍稍提升速度,因為數(shù)據(jù)可以在reqeust等待網(wǎng)絡(luò)數(shù)據(jù)時進(jìn)行處理。

如果你需要對響應(yīng)數(shù)據(jù)流進(jìn)行流處理(例如XML和JSON解析),這個特性會很有用。如果啟用了這個選項,你可以通過實(shí)現(xiàn)代理函數(shù)request:didReceiveData:來將返回的網(wǎng)絡(luò)數(shù)據(jù)一點(diǎn)一點(diǎn)喂給解析器。

注意,如果shouldWaitToInflateCompressedResponses 被設(shè)置為NO,那么原始(未解壓)的數(shù)據(jù)會被拋棄。具體情況請查閱ASIHTTPRequest.h的代碼注釋。

使用gzip壓縮request數(shù)據(jù)

1.0.3版本的新特性就是gzip壓縮request數(shù)據(jù)。使用這個特性,你可以通過設(shè)置shouldCompressRequestBody 為YES來使你的程序壓縮POST/PUT的內(nèi)容,默認(rèn)值為NO。

apache的mod_deflate可以自動解壓縮gzip壓縮的請求體(通過合適的設(shè)置)。這個方法適用于CGI內(nèi)容,但不適用于內(nèi)容過濾器式的模塊(例如mod PHP),這種情況下,你就必須自己解壓縮數(shù)據(jù)。

ASIHTTPRequest 無法檢測一個服務(wù)器是否能接收壓縮過的請求體。當(dāng)你確定服務(wù)器可以解壓縮gzip包時,再使用這個特性。

請避免對已經(jīng)壓縮過的格式(例如jpeg/png/gif/pdf/swf)進(jìn)行壓縮,你會發(fā)現(xiàn)壓縮后的數(shù)據(jù)比原數(shù)據(jù)更大。(夢維:因為壓縮包都有頭信息)

責(zé)任編輯:閆佳明 來源: dreamingwish
相關(guān)推薦

2013-07-21 18:18:00

iOS開發(fā)ASIHttpRequ

2013-07-21 18:22:59

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:27:15

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:38:00

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:25:29

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:43:57

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:15:17

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:33:15

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:32:13

iOS開發(fā)ASIHTTPRequ

2013-07-22 13:48:55

iOS開發(fā)ASIHTTPRequ使用Cookie

2013-07-22 14:02:17

iOS開發(fā)ASIHTTPRequ

2013-03-13 09:53:50

SQL Server

2023-11-09 09:48:16

數(shù)據(jù)壓縮微服務(wù)

2013-07-21 18:09:21

iOS開發(fā)ASIHttpRequ創(chuàng)建和執(zhí)行reques

2013-07-22 14:10:26

iOS開發(fā)ASIHTTPRequ

2018-06-19 09:00:00

2013-07-21 18:04:22

ASIHttpRequiOS開發(fā)

2013-07-22 14:29:35

iOS開發(fā)ASIHTTPRequ

2013-03-25 14:13:23

iOSASIHTTPRequ

2009-07-08 00:24:00

數(shù)據(jù)壓縮Oracle 11g
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號