La caché de disco QML
Debe definir sus módulos QML mediante qt_add_qml_module, que garantiza que el compiladorQt Quick procese sus archivos QML y JavaScript con antelación. Además, garantiza un rendimiento óptimo en tiempo de ejecución. El compilador deQt Quick genera código de bytes para cada función y enlace. Este código de bytes puede ser utilizado por el intérprete QML y el compilador Just-in-time (JIT) del motor QML. Además, el compiladorQt Quick genera código nativo para las funciones y los enlaces adecuados. El código nativo puede ejecutarse directamente, lo que se traduce en un mayor rendimiento que la interpretación o la compilación Just-in-time del código de bytes. Tanto el código de bytes como el nativo se compilan en el binario.
Al utilizar qmake, puede especificar CONFIG += qtquickcompiler para dar un tratamiento similar a los archivos QML y JavaScript añadidos como recursos al proyecto. Qt Creator tiene una configuración que permite pasar CONFIG += qtquickcompiler a la línea de comandos de qmake. Por defecto, está habilitado para la liberación y el perfil de construcciones. qmake no puede pasar tanta información a la Qt Quick compilador como CMake. Por lo tanto, la compilación contendrá menos código nativo.
Debes asegurarte de cargar tus documentos QML desde el sistema de archivos de recursos siempre que sea posible. De lo contrario, el motor QML no podrá encontrar el código compilado con antelación.
Si no se encuentra código de bytes o código nativo para un documento QML en tiempo de ejecución, o si se encuentra el código pero no se puede utilizar, el motor QML compila el documento en una representación de código de bytes sobre la marcha. El proceso de compilación puede llevar mucho tiempo y el resultado sólo contendrá código de bytes. Las cargas posteriores del mismo documento producirán el mismo código de bytes. El motor QML puede optimizar este paso almacenando en caché el resultado de la compilación. Almacena el código de bytes en un archivo de caché y, posteriormente, carga el archivo de caché en lugar de volver a compilar cuando se vuelve a solicitar el mismo documento QML. Normalmente, los archivos de caché se almacenan en un subdirectorio qmlcache del directorio de caché del sistema, indicado por QStandardPaths::CacheLocation.
Se realizan comprobaciones para garantizar que los archivos de caché y el código compilado con antelación sólo se cargan si se cumplen todas las condiciones siguientes:
- La versión de Qt no ha cambiado
- El código fuente del archivo original no ha cambiado.
- El depurador QML no se está ejecutando
Sólo la variable QML_FORCE_DISK_CACHE (ver más abajo) anula la condición relativa al depurador QML. Las demás variables de entorno no influyen en estas condiciones.
La forma principal de ajustar el comportamiento en relación con el código compilado por adelantado y el almacenamiento en caché es a través de la variable de entorno QML_DISK_CACHE. Esta variable toma una lista de opciones separadas por comas, por ejemplo:
QML_DISK_CACHE=aot,qmlc-read
Las opciones disponibles son las siguientes:
| Opción | Descripción |
|---|---|
| aot-native | Carga las unidades de compilación compiladas con antelación y permite la ejecución de cualquier código nativo que se encuentre en ellas. |
| aot-bytecode | Carga las unidades de compilación compiladas por adelantado y permite la interpretación y compilación just-in-time del código byte que se encuentre en ellas. |
| aot | Abreviatura de aot-native,aot-bytecode. |
| qmlc-read | Carga cualquier unidad de compilación almacenada en caché para archivos QML y JavaScript desde el sistema de archivos host y permite la interpretación y compilación "just-in-time" del código de bytes que se encuentra en ellos. |
| qmlc-write | Al compilar un archivo QML o JavaScript sobre la marcha, crear un archivo de caché después. El archivo de caché puede cargarse cuando se vuelva a solicitar el mismo documento. |
| qmlc | Abreviatura de qmlc-read,qmlc-write. |
Además, puede utilizar las siguientes variables de entorno:
| Variable de entorno | Descripción |
|---|---|
QML_DISABLE_DISK_CACHE | Desactiva la caché de disco y fuerza la recompilación desde el código fuente para todos los archivos QML y JavaScript. QML_DISABLE_DISK_CACHE anula QML_DISK_CACHE. |
QML_FORCE_DISK_CACHE | Activa la caché de disco incluso al depurar QML. No puede utilizar el depurador de JavaScript de esta forma. Por ejemplo, puede que no se detenga en los puntos de interrupción. Sin embargo, puede seguir utilizando el inspector QML para explorar la jerarquía de objetos. QML_FORCE_DISK_CACHE anula QML_DISABLE_DISK_CACHE y QML_DISK_CACHE. |
QML_DISK_CACHE_PATH | Especifica una ubicación personalizada donde se almacenarán los archivos de caché en lugar de utilizar la ubicación predeterminada. |
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.