Mac OS で Mail.app のプラグインを作成しました。WebView を使用して Web ページを表示しています。すべて問題ありませんが、Web ページの読み込みが遅くなります。
次に、読み込み時間を比較するテスト ココア アプリケーションを作成しました。テスト アプリケーションがページを最大 5 倍高速にロードすることに驚きました。
開発者バーで、テスト アプリケーションが「要求された URL のリソースは変更されておらず、キャッシュされたリソースを使用できる」ことを示す304 コードを受け取ることがわかりました。テスト アプリケーションとは対照的に、プラグインは常に 200 の http コードを受け取り、リソースを再度ロードします。
おそらく、webview でキャッシュを使用するように指定する必要があるか、バンドルのアクセス許可に問題があります。
プラグインでは、SharedURLCache
このように指定してみました
NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*20
diskCapacity:1024*1024*5
diskPath:NSHomeDirectory()];
[NSURLCache setSharedURLCache:cache];
次にResourceLoadDelegate
、WebView にサブスクライブして、このようにリクエスト オブジェクトを変更しようとしました
- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
{
if ([request cachePolicy] != NSURLRequestReturnCacheDataElseLoad)
{
return [NSURLRequest requestWithURL:[request URL]
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:[request timeoutInterval]];
} else {
return request;
}
}
また、WebViewのプロパティを変更しようとしました
[[webView preferences] setUsesPageCache:YES];
[[webView preferences] setCacheModel:WebCacheModelPrimaryWebBrowser];
しかし、それはすべて機能していません。
手伝ってくれてありがとう。