【问题标题】:Can QML caching in Qt 5.8 be disabled for a particular project?可以为特定项目禁用 Qt 5.8 中的 QML 缓存吗?
【发布时间】:2017-01-29 15:31:42
【问题描述】:
Qt 5.8 应该带有可选的提前使用 qtquick 编译器,但它带有一个 sort-of-a-jit-compiler,该功能默认启用并将编译的 QML 文件缓存在磁盘上,以便提高启动性能并减少内存使用。
然而,该功能与 serious bugs 一起出现,这大大减少了,或者在我的情况下甚至完全否定了它的好处,因为我一开始就没有启动时间问题,而且测试也没有发现任何问题内存使用方面的任何改进。
所以我想做的是在我的项目中选择退出该功能,但我似乎不知道如何做到这一点。回到 Qt 5.7.1 不是一个选项,因为我的项目依赖于 5.8 引入的其他新功能。
【问题讨论】:
标签:
qt
caching
configuration
qml
qt5.8
【解决方案1】:
将QML_DISABLE_DISK_CACHE(设置为1)添加到您的环境变量中。您应该可以通过 qputenv 在您的应用程序中执行此操作——在加载 QML 内容之前将其放在 main 的某个位置。
【解决方案2】:
感谢 peppe 通知我们环境变量,但 qputenv() 仅将 QByteArray 作为值参数,因此 1 将不起作用。
有效的两个选项:
qputenv("QML_DISABLE_DISK_CACHE", "1"); // or
qputenv("QML_DISABLE_DISK_CACHE", "true");
这成功禁用缓存并防止相关的错误出现。