我們想試試,在iphone的safari或者app中的UIWebView控件,訪問網絡資源時,對於圖片是否有緩存。如果有緩存的話,對於同一個圖片,服務器會返回 304 Not Modified,這樣瀏覽器就可以用本地的緩存圖片來替代。
我們首先在mac機上啟動了一個apache服務,然后用tail -f 看 /var/log/apache2/access_log文件。在PC機上,多次訪問這個apache服務上的圖片時,log中會顯示如下信息:
192.168.8.211 - - [06/Sep/2011:19:17:33 +0800] "GET /~tangqiao/test.jpg HTTP/1.1" 304 -
可見,在PC機上,緩存是有效的。
然后在iphone的safari中做同樣的嘗試,我們發現在多次刷新時,服務端的log總是:
192.168.8.76 - - [06/Sep/2011:19:23:54 +0800] "GET /~tangqiao/test.jpg HTTP/1.1" 200 156898
然后我們寫了一個小的app,在里面設置UIWebView loadRequest:
NSURL *url = [NSURL URLWithString:@"http://192.168.8.211/~tangqiao/test.jpg"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
然后發現,該app在每次調用loadRequest后,服務端的log也同樣是:
192.168.8.76 - - [06/Sep/2011:19:23:54 +0800] "GET /~tangqiao/test.jpg HTTP/1.1" 200 156898
由此實驗可知,iphone端的圖片緩存是沒有的。每次訪問都需要從服務端重新下載圖片。