3

我在 Mac OS 上为 Mail.app 创建了插件。我正在使用 WebView 显示网页,一切都很好,但网页加载缓慢。

然后我创建了测试可可应用程序来比较加载时间。当测试应用程序加载页面的速度快了约 5 倍时,我感到很惊讶。

在开发人员栏中,我看到我的测试应用程序收到304 代码,表明“请求的 URL 的资源没有更改,可以使用缓存的资源”。与测试应用程序相比,插件总是接收 200 个 http 代码并再次加载资源。

也许我应该指定在 webview 中使用缓存,或者我有一些捆绑权限问题。

在插件中,我尝试这样SharedURLCache指定

NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*20
                                                  diskCapacity:1024*1024*5
                                                      diskPath:NSHomeDirectory()];

[NSURLCache setSharedURLCache:cache];

然后我尝试订阅ResourceLoadDelegateWebView 并像这样更改请求对象

- (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