2010-10-13 5 views
5

Qualcuno ha aggiunto con successo un'intestazione Content-Length alle normali pagine ColdFusion (sto utilizzando CF9)? Sto configurando un nuovo server dietro un sistema di bilanciamento del carico di Cisco con compressione: la scatola si rifiuta di comprimere qualsiasi cosa senza questa intestazione, ma CF non lo passa per impostazione predefinita.ColdFusion - come impostare l'intestazione Content-Length

<cfheader name="Content-Length" value="something"> imposta l'intestazione, ma trovare il valore corretto è un problema.

Qualsiasi suggerimento sarebbe molto apprezzato.

+0

Non so se si dispone del controllo sul bilanciamento del carico, ma credo che la configurazione predefinita di bilanciamento del carico Cisco sia che comprime solo il contenuto di 512 byte di lunghezza. Ma questo è un valore di configurazione (dimensione minima nelle impostazioni di compressione), e può essere modificato, e sono abbastanza sicuro che possa essere modificato per comprimere tutto (con l'intestazione accetta corretta sulla richiesta, obv.) –

risposta

0

Non mi piace questa idea, ma potresti creare una sorta di wrapper con cfsavecontent e prenderne la lunghezza?

Qualcosa di simile:

<cfsetting enablecfoutputonly="yes"> 
<cfsavecontent variable="testVar"> 
    <cfinclude template="myPage.cfm"> 
</cfsavecontent> 
<cfheader name="Content-Length" value="#len(testVar)#"> 
<cfoutput>#testVar#</cfoutput> 

Non sono sicuro se il conteggio sarebbe stato fuori a causa di problemi di spazio bianco.

+0

facile, #trim (testVar) #? – Henry

3

Credo di aver risolto:

<cfheader name="Content-Length" value="#getPageContext().getCFOutput().getBuffer().size()#">

ho bloccato che in o nRequestEnd() e la casella di Cisco felicemente comprime via.

Grazie per l'input persone.

+0

Ha parlato troppo presto. La dimensione() è quasi sempre corretta ... – Geoff