3

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];

しかし、それはすべて機能していません。

手伝ってくれてありがとう。

4

0 に答える 0