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 VariableDescription
QML_DISABLE_DISK_CACHEDisables the disk cache and forces re-compilation from source for all QML and JavaScript files.
QML_FORCE_DISK_CACHEEnables 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_PATHSpecifies 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.