我正在开发一个使用cefsharp浏览器作为其一部分的银行设备上的应用程序。因为这个应用程序将被任何人使用,它不应该保存下一个用户可以看到的来自先前用户的任何数据。我希望在关闭后清除所有缓存的浏览器数据。
public void InitBrowser()
{
settings = new CefSettings();
settings.CachePath = AppDomain.CurrentDomain.BaseDirectory + "cache";
settings.CefCommandLineArgs.Add("disable-application-cache", "1");
settings.CefCommandLineArgs.Add("disable-session-storage", "1");
if (!Cef.IsInitialized) Cef.Initialize(settings);
webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
MainGrid.Children.Add(webBrowser);
}
我希望在调用名为WebPages_Exit
的函数后清除所有缓存的数据。如何在不删除浏览器实例或关闭CEF的情况下删除所有缓存数据,导致CEF无法初始化两次,并且在处理后无法创建另一个浏览器实例。
我在visit
中实现了ICookieVisitor
功能以保存Cookie并使用deleteCookies
等方法或禁用缓存cefSetting命令,但没有任何原因导致Cookie列表为空且{{1}永远不会调用visit
的函数。似乎它被保存在另一个部分,只是在CEF关闭时重置。
答案 0 :(得分:6)
我找到了答案!这是因为禁用了缓存设置。
通过禁用缓存设置,它实际缓存数据,但无法访问,例如,如果不关闭CEF
,则无法删除cookie。因此,如果您启用缓存设置(将其保留为默认设置),则可以使用Cef.GetGlobalCookieManager().DeleteCookies("", "")
方法删除它们。
答案 1 :(得分:0)
您可以在调用Cef.Initialize
Directory.Delete(cacheDirBase + "\\blob_storage", true);
Directory.Delete(cacheDirBase + "\\Cache", true);
Directory.Delete(cacheDirBase + "\\Code Cache", true);
Directory.Delete(cacheDirBase + "\\GPUCache", true);
Directory.Delete(cacheDirBase + "\\Local Storage", true);
Directory.Delete(cacheDirBase + "\\Session Storage", true);
只需删除您不想删除的内容即可。