macos - 如何清除 Cocoa 中的 WebView 缓存?

标签 macos cocoa webview

如何清除/刷新 WebView在 Cocoa 应用程序中缓存?

特别是,我想清除本地样式表的缓存。

我尝试了以下方法,但没有成功:

// Tried this before loadRequest
[[NSURLCache sharedURLCache] removeAllCachedResponses];

// Also tried this before and after loadRequest
[webView.mainFrame reloadFromOrigin];

即使将 WebView 替换为新的,仍然使用缓存的样式表。

最佳答案

其他建议的解决方案不适用于本地样式表(尽管它们应该适用于远程资源)。

我终于设法通过 resourceLoadDelegate 解决了这个问题,通过显式设置缓存策略:

- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource {
    request = [NSURLRequest requestWithURL:[request URL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:[request timeoutInterval]];
    return request;
}

有趣的东西。

关于macos - 如何清除 Cocoa 中的 WebView 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12072076/

相关文章:

ios - SwiftUI - 当放置在 macOS 上的列表中时,文本字段被禁用(不可编辑)

python - 在 Mac 启动时运行 python 脚本

c - 通过管道转发时,递归进程树输出不同

objective-c - PDFAnnotationText 在 10.12 上不显示弹出窗口

android - 如何在 Android WebView 渲染之前修改内容?

javascript - WebView 在 loadUrl() 期间隐藏软键盘,这意味着在调用 javascript 时键盘无法保持打开状态

python - os.path.join() 是如何工作的?

xcode - 应用程序部署问题

android - 编译应用程序时,R8 程序类型已存在错误

macos - 使用 NSOpenPanel 获取文件夹位置删除文件 ://localhost