The QML Disk Cache
When your application loads a QML or JavaScript file for the first time, the QML engine compiles the file into a byte code representation on the fly and runs it. The compiling process can be time consuming, and subsequent loads of the same document yield the same result. To optimize this step, the QML engine can cache the result. It stores the byte code in a cache file and later loads the cache file instead of re-compiling when the same file is requested again. Usually the files are stored in a subdirectory qmlcache
of the system's cache directory, as denoted by QStandardPaths::CacheLocation. Checks are in place to make sure that the cache files are only loaded if all of the following conditions are met:
- The Qt version has not changed
- The source code in the original file has not changed
- The QML debugger is not running
The disk caching behavior can be fine tuned using the following environment variables:
Environment Variable | Description |
---|---|
QML_DISABLE_DISK_CACHE | Disables the disk cache and forces re-compilation from source for all QML and JavaScript files. |
QML_FORCE_DISK_CACHE | Enables the disk cache even when debugging QML. You cannot use the JavaScript debugger this way. It may fail to stop at breakpoints, for example. You can still use the QML inspector to explore the object hierarchy, though. QML_FORCE_DISK_CACHE overrides QML_DISABLE_DISK_CACHE . |
QML_DISK_CACHE_PATH | Specifies a custom location where the cache files shall be stored instead of using the default location. |
You can also specify CONFIG += qtquickcompiler
in your .pro
file to perform the compilation ahead of time and integrate the resulting byte code directly into your executable. For more information, see Qt Quick Compiler.