如何在应用程序重启后强制重用缓存 - GeckoFX / xulRunner

How to force cache to be reused after app restart - GeckoFX / xulRunner

我承认我是嵌入式浏览器的新手,但我有一个 GeckoFX v33 控件在 WPF 应用程序中运行和托管。浏览和缓存在浏览 会话 期间工作。但是,在应用程序 重新启动 时,缓存会丢失(或被忽略),所有 Web 资产都会重新下载!

我很傻眼为什么默认情况下不启用它,因为它毕竟是一个网络浏览器控件。

我已尝试将自定义配置文件路径设置为具有写入权限的现有目录:

var path = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "xulrunner");
Gecko.Xpcom.ProfileDirectory = System.IO.Path.Combine( Directory.GetCurrentDirectory(), "webcache");
Gecko.Xpcom.Initialize(path);

我也试过设置各种偏好组合,即

Gecko.GeckoPreferences.User.SetBoolPref("browser.cache.disk.enable",true);                
Gecko.GeckoPreferences.User.SetIntPref("Browser.cache.disk.capacity", 50000);

但是,它总是会在应用重启时再次加载网络资产!

有谁知道让 geckoFX 或 xulRunner 在启动时查看最后缓存的正确配置?

提前致谢!

好的,所以我已将此错误缩小到 geckofx-33.0 版本

降级到 geckofx-31.0-01 或更低版本 解决了我的问题并且缓存被保留(在 /cache2 文件夹中,创建自动)。

我测试了以下组合(OS:Windows):

  • GeckoFx 29.0-015.zip with xulRunner 29.0.1.en-US.win32.zip: Disk caching WORKS!

  • GeckoFx 31.0-01.zip with xulRunner 31.0.en-US.win32.zip: Disk caching WORKS!

  • GeckoFx 33.0-02.zip with xulRunner 33.0.2.en-US.win32.zip: Disk caching FAILS!

我使用的是上面的 33 版本(因为它是最新版本!)因此无法使磁盘缓存工作。我绝对认为这是一个错误,因为它每次都可以重现。我不知道这个错误是在 geckoFx 还是在 xulRunner 运行时,但我会把它留给开发人员的大脑信任来修复。我相信缓存 API 在 v33 中发生了变化。

所以,现在我想我会回退到版本 31 并等待修复。