iPhone用に最適化されたサイトをロードするシンプルなアプリがありUIWebView
ます.
問題は、キャッシュが機能していないように見えることです:
[webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: url]
cachePolicy: NSURLRequestUseProtocolCachePolicy
timeoutInterval: 60.0]];
このリモート ページで参照されているもの (css、画像、外部 JavaScript ファイル) はキャッシュされません (リクエストが If-Modified-Since ヘッダーやキャッシュ制御の方法で何かを送信することはありません)。
出来ますか?通常の Cocoa WebView には、リソース要求ごとに呼び出されるデリゲート メソッドとポスト ロード ( -didFinishLoadingFromDataSource:
) があり、独自のキャッシュを展開するために使用できるようです。しかし、ここでは当てはまらないようです。
私のページ全体 (ページとその参照リソース) は約 89K 圧縮されています..これは、いくつかのスポットで 3G よりも遅く、EDGE よりもさらに悪いです。着信要求は、少なくとも圧縮 ( accept-encoding=gzip, deflate
) を受け入れることを示しているので、それで問題ないと思います。
この yui studyを読みましたが、これは iPhone がアイテムごとに 25k をキャッシュすることを示しているようです。非圧縮で 25k を超える唯一のものは jquery です (圧縮されていますが非圧縮 - 30k です)。他のすべてはキャッシュ可能でなければなりません。フェッチされたページで参照されているものに対するリクエストは、サーバー側で 304 をトリガーしていません。
その yui の調査はほぼ 1 年前のもので、モバイル サファリのみで推測しています。
これはUIWebView
、ネイティブの iPhone アプリで を使用しています。