Adobe ColdFusion (y Railo) compilan las plantillas de CFML en el bytecode de JVM y, si se configuran para hacerlo, escribirán las clases compiladas en el disco como archivos .class. La memoria caché de la plantilla es un mecanismo para decir: si la clase objetivo ya está cargada, no se moleste en mirar el archivo (fuente) en el disco para ver si necesita una recompilación: confíe en lo que hay en la memoria.
Las mejoras recientes a ACF y Railo le permiten especificar que los archivos (fuente) se pueden verificar siempre (no de confianza), una vez por solicitud, nunca (siempre de confianza).
Eso no debería ser noticia para nadie.
Obviamente, ACF y Railo compilarán cualquier archivo .cfm o .cfc que se les pida procesar para que "terminen" en la memoria caché de confianza si está habilitado.
Si incluye un archivo, cualquier archivo, ACF y Railo también lo compilarán en bytecode de JVM (y crearán un archivo .class en el disco si están configurados para hacerlo). Como se compila un archivo incluido, también "terminará" en la memoria caché de confianza.¿Qué ocurre si incluyes un archivo CSS? Se compila en bytecode que genera todo el contenido del archivo CSS como una cadena para la secuencia de respuesta. Como es una clase compilada, ahora produce una cadena codificada, si cambias el archivo fuente CSS y tienes habilitada la caché confiable, ACF y Railo confiarán en lo que está en el cargador de clases y no lo recompilarán (suponiendo que la fuente de verificación "nunca" es el administrador ajuste).
Puede verificar esto limpiando la carpeta cfclasses, reiniciando su motor CFML y ejecutando su código. Verás que aparece un archivo .class para tu archivo CSS (suponiendo que tienes guardados los archivos de clase en el disco habilitados).
Por lo tanto, cfinclude fuerza la compilación de "cualquier" archivo y las reglas normales de la memoria caché de confianza se aplican a las clases cargadas en la memoria.
Ya no uso ACF, por lo que no puedo hablar en detalle de los archivos .cfr (Railo no admite archivos de informe) pero lo más probable es que dependa de si ACF compila un archivo .cfr o no. Debería ser fácil de verificar (mirando en la carpeta cfclasses).
Agregué otro caso que descubrí cuando el contenido puede entrar en la memoria caché de la plantilla. ¿Tienes más ideas? – nosilleg
Se agregó aclaración. –
El enlace que proporcionó es un ejemplo de un objeto de nivel de aplicación que se almacena en caché, mientras continúa ejecutando dinámicamente el cuerpo de su método/pseudoconstructor, que a su vez es un CFINCLUDE. Esto es análogo a mi * Situación B * anterior. El objeto y el método se almacenan en caché, pero lo que el método produce cuando se llama no. Esto no tiene ninguna incidencia en la Caché de confianza, que es un proceso completamente separado que CF utiliza para examinar/ignorar las plantillas de CF para su modificación/recompilación. –