我在 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];
然后我尝试订阅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];
但这一切都不起作用。
感谢帮助。