coldfusion whitespace cfml

Espacio en blanco/Coldfusion



whitespace cfml (8)

¿Cuál sería la forma correcta de detener el espacio en blanco que produce ColdFusion?

Sé que hay cfcontent y cfsetting enableCFoutputOnly . ¿Cuál es la forma correcta de hacer eso?


Además de <cfsilent> , <cfsetting enablecfoutputonly="yes"> y <cfprocessingdirective suppressWhiteSpace = "true"> es <cfcontent reset="true" /> . Puede eliminar espacios en blanco al principio de su documento con él.

El documento HTML5 comenzaría así:

<cfcontent type="text/html; charset=utf-8" reset="true" /><!doctype html>

Documento XML:

<cfcontent reset="yes" type="text/xml; charset=utf-8" /><CFOUTPUT>#VariableHoldingXmlDocAsString#</CFOUTPUT>

De esta manera no obtendrá el error "El contenido no está permitido en prólogo" para documentos XML.

Si obtiene espacios en blanco no deseados de una función, use el atributo de output para suprimir cualquier salida y devolver el resultado como una cadena, por ejemplo:

<cffunction name="getMyName" access="public" returntype="string" output="no"> <cfreturn "Seybsen" /> </cffunction>


Alternativamente, puede asegurarse de que toda su página esté almacenada dentro de una variable y todo este procesamiento se realice dentro de las etiquetas cfsilent. p.ej

<cfsilent> <!-- some coldfusion --> <cfsavecontent variable="pageContent"> <html> <!-- some content --> </html> </cfsavecontent> <!-- reformat pageContent if required --> </cfsilent><cfoutput>#pageContent#</cfoutput>

Finalmente, puede realizar cualquier procesamiento adicional después de haber generado el contenido de la página, pero antes de emitirlo, por ejemplo, una expresión regular para eliminar espacios en blanco adicionales o algunos códigos de ordenación.


Aquí hay un consejo si usas CFC.

Si no espera que su método genere ningún resultado, use output="false" en <cffunction> y <cfcomponent> (no es necesario solo si está usando el estilo de script CF9). Esto eliminará una gran cantidad de espacios en blanco no deseados.


Descubrí que incluso utilizando todas las formas posibles para eliminar los espacios en blanco, su código aún puede tener algunos espacios no deseados o saltos de línea. Si aún está experimentando esto, es posible que deba sacrificar un código bien formateado para obtener el resultado deseado.

por ejemplo, en lugar de:

<cfprocessingdirective supressWhiteSpace = "true"> <cfquery ...> ... ... ... </cfquery> <cfoutput> Welcome to the site #query.userName# </cfoutput> </cfprocessingdirective>

Es posible que necesites codificar:

<cfprocessingdirective supressWhiteSpace = "true"><cfquery ...> ... ... ... </cfquery><cfoutput>Welcome to the site #query.UserName#</cfoutput></cfprocessingdirective>

Esto no es CF que agrega espacios en blanco, pero usted agrega espacios en blanco al formatear su CF.

HTH



Puede modificar la salida de ColdFusion obteniendo acceso al Buffer de salida de ColdFusion. James Brown demostró esto recientemente en nuestra reunión de grupo de usuarios ( Grupo de usuarios de desarrolladores de web de Florida central ).

<cfscript> out = getPageContext().getOut().getString(); newOutput = REreplace(out, ''regex'', '''', ''all''); </cfscript>

Un gran lugar para hacer esto sería en Application.cfc onRequestEnd (). Su resultado podría ser una sola línea de HTML que luego se envía al navegador. Trabaje con su servidor web para GZip y reducirá mucho el ancho de banda.


Si ni <cfsilent> ni <cfsetting enablecfoutputonly="yes"> pueden satisfacerlo, entonces es probable que esté superando la ingeniería de este problema.

Cuando se pregunta únicamente por razones estéticas, mi recomendación es: ignorar el espacio en blanco, no hace ningún daño.


Si tiene acceso al servidor y desea implementarlo en cada búsqueda de página, busque e instale trimflt.jar. Es un filtro de servlet de Java que eliminará todos los espacios en blanco y los saltos de línea antes de enviarlo. Coloque el jar en el directorio / WEB-INF / lib de CF y edite el archivo web.xml para agregar el filtro. También es configurable para eliminar comentarios, excluir archivos o extensiones y preservar cadenas específicas. Llevo unos años ejecutándolo sin problema. Ponlo a punto y olvídalo de la solución.