2011-11-25 11 views
6

¿Qué extensiones de archivos caché en caché de confianza? CFM y CFC son obvios, pero ¿qué pasa con CFR? ¿Hay otras extensiones de archivos capturadas por Trusted Cache?¿Qué extensiones de archivo se ven afectadas por el caché de confianza de ColdFusion?

Algunos lugares que conozco/sospechoso que los archivos entran en el cache de las plantillas son:

  • directamente especificado en la URL (cfm, cfml, cfc, más?)
  • cfinclude (cualquier extensión de archivo que se utiliza en un ejemplo cfinclude <cfinclude template="./some.css">)
  • cfmodule (cfm, más?)
  • cfimport (cfm, también jar y tld?)
  • CFOBJECT, createobject (cfc, también .net, com, servicios Java y web?)
  • cfreport (cfr que puede ser cumplida utilidad cfcompile?)

¿Hay otras etiquetas que tendrá el mismo efecto de agregar contenido en la caché de la plantilla?

Respuesta

0

Desafortunadamente no hay una fuente oficial de esta información. Sin embargo, es posible, con mucho trabajo, probar cada etiqueta para ver si los archivos terminan en la caché de confianza.

Sus dos primeros puntos están cubiertos por Shawn Holmes' answer y Sean Corfield's answer, respectivamente.

Bullet 3: cfmodule está limitado a archivos cfm, de modo que la extensión es la única de la que debe preocuparse.

Bullet 6: cfreport no debe ingresar al caché de la plantilla, ya que está convirtiendo el archivo, no compilándolo para que se ejecute el código.

5

De forma predeterminada, ColdFusion incluye las extensiones * .cfm, * .cfc y * .cfml correlacionadas en JRun como las extensiones de confianza. Puede ver estas asignaciones abriendo los archivos de configuración j2ee-web.xml y web.xml en \ JRun4 \ servers \ cfusion \ cfusion-ear \ cfusion-war \ WEB-INF \ (o cerca de esto, según su instalación) :

<servlet-mapping id="coldfusion_mapping_3"> 
    <servlet-name>CfmServlet</servlet-name> 
    <url-pattern>*.cfm</url-pattern> 
</servlet-mapping> 
<servlet-mapping id="coldfusion_mapping_4"> 
    <servlet-name>CFCServlet</servlet-name> 
    <url-pattern>*.cfc</url-pattern> 
</servlet-mapping> 
<servlet-mapping id="coldfusion_mapping_5"> 
    <servlet-name>CfmServlet</servlet-name> 
    <url-pattern>*.cfml</url-pattern> 
</servlet-mapping> 

Sin embargo, también se puede configurar de forma manual asignaciones flamantes aquí también, lo que permitirá ColdFusion para analizar/compilar las etiquetas CFML en archivos con una extensión diferente, así (he trabajado con servidores CF se han configurado para analizar .shtml, por ejemplo)

Nota: También deberá realizar alguna configuración adicional para su servidor web, ya sea Apache, IIS o lo que sea.

Una vez que CF está configurado para manejar un archivo de una extensión en particular, se agrega a la lista de archivos que se procesa en la caché de confianza, ya que ese archivo finalmente equivale a un archivo .class compilado bajo la cubierta .

+0

Agregué otro caso que descubrí cuando el contenido puede entrar en la memoria caché de la plantilla. ¿Tienes más ideas? – nosilleg

+0

Se agregó aclaración. –

+0

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. –

7

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).

+0

¡Gracias! +1 para El enlace faltante, eliminé mi respuesta. –

+0

Todo eso tiene sentido y se correlaciona con los datos que se encuentran en otra parte de la web, lo que no puedo encontrar son detalles sobre qué puede entrar en la caché de la plantilla y cómo. Algunas otras áreas donde sé/sospecho que las plantillas ingresan son: carga directa desde un servidor web según la respuesta original de @ShawnHolmes, cfinclude, cfmodule, cfimport ('jar's y' tld's, así como 'cfm's?), Cfobject ('cfc's, pero .net, com, java, y servicios web?), createobject, cfreport (' cfr' se puede cumplir con la utilidad cfcompile), ¿otros? Además, no creo que ACF siempre escriba los archivos .class. Ejecutaba pruebas y solo tenía una .class en lugar de 4. – nosilleg

+0

@ShawnHolmes En vergüenza de haber eliminado la parte original de tu respuesta, pensé que era una parte muy valiosa de la respuesta a esta pregunta. – nosilleg

Cuestiones relacionadas