我在Mac OS上为Mail.app创建了插件。 我正在使用WebView来显示网页,一切都很好,但网页加载速度很慢。
然后我创建了测试cocoa应用程序来比较加载时间。 当测试应用程序加载页面的速度快〜5倍时,我感到很惊讶。
在开发人员栏中,我看到我的测试应用程序收到304 code,表示“请求的URL的资源未更改,并且可以使用缓存资源”。 与测试应用程序相比,插件总是接收200个http代码并再次加载资源。
也许我应该指定在webview中使用缓存,或者我有一些捆绑权限问题。
在插件中,我尝试像这样指定SharedURLCache
NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*20
diskCapacity:1024*1024*5
diskPath:NSHomeDirectory()];
[NSURLCache setSharedURLCache:cache];
然后我尝试在WebView上订阅ResourceLoadDelegate
并像这样更改请求对象
- (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];
但是一切都行不通。
感谢您的帮助。