国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

iOS開發ASIHTTPRequest數據壓縮和Coo、kie的使用

2019-11-02 14:18:56
字體:
來源:轉載
供稿:網友

   數據壓縮

  使用gzip來處理壓縮的響應數據

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

  怎樣設置apache的mod_deflate來使用gzip壓縮數據

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

  在ASIHTTPRequest中使用gzip

  - (IBAction)grabURL:(id)sender

  {

  NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com"];

  ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

  // 默認為YES, 你可以設定它為NO來禁用gzip壓縮

  [request setAllowCompressedResponse:YES];

  [request startSynchronous];

  BOOL *dataWasCompressed = [request isResponseCompressed]; // 響應是否被gzip壓縮過?

  NSData *compressedResponse = [request rawResponseData]; // 壓縮的數據

  NSData *uncompressedData = [request responseData]; // 解壓縮后的數據

  NSString *response = [request responseString]; // 解壓縮后的字符串

  }

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

  相應數據的實時解壓縮

  默認情況下,ASIHTTPRequest會等到request完成時才解壓縮返回的數據。若設置request的shouldWaitToInflateCompressedResponses 屬性為NO,ASIHTTPRequest將會對收到的數據進行實時解壓縮。 在某些情況下,這會稍稍提升速度,因為數據可以在reqeust等待網絡數據時進行處理。

  如果你需要對響應數據流進行流處理(例如XML和JSON解析),這個特性會很有用。如果啟用了這個選項,你可以通過實現代理函數request:didReceiveData:來將返回的網絡數據一點一點喂給解析器。

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

  使用gzip壓縮request數據

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

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

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

  請避免對已經壓縮過的格式(例如jpeg/png/gif/pdf/swf)進行壓縮,你會發現壓縮后的數據比原數據更大。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳信县| 邵阳县| 合肥市| 孝昌县| 金寨县| 来安县| 闽侯县| 连山| 个旧市| 布拖县| 临江市| 江源县| 从江县| 紫阳县| 城固县| 宜阳县| 牙克石市| 伊通| 鄂托克前旗| 屯门区| 泰兴市| 远安县| 葵青区| 互助| 黑河市| 新郑市| 慈利县| 平江县| 瑞安市| 阜阳市| 陕西省| 南昌市| 固镇县| 新兴县| 德清县| 犍为县| 华阴市| 鄂尔多斯市| 湘阴县| 济阳县| 定南县|