나는 HTML 서버 측을 생성하고, 압축하고, 수동으로 gzip하고 cfcontent로 다시 보내는 Coldfusion 응용 프로그램을 가지고 있습니다. ColdFusion cfcontent에서 속성 유효성 검사 오류를 수정하는 방법 (java.string.lang은 지원되지 않는 변수 유형)?
은 다음과 같습니다 이<cfsavecontent variable="renderedResults">
<cfoutput><p>Hello World</p></cfoutput>
</cfsavecontent>
<cfscript>
compressedHTML = reReplace(renderedResults, "\>\s+\<", "> <", "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(13), "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(09), "ALL");
</cfscript>
<cfif cgi.HTTP_ACCEPT_ENCODING contains "gzip">
<cfinvoke component="services.utils" method="gzip" stringToZip="#compressedHTML#" returnvariable="compressedHTML"></cfinvoke>
<cfheader name="Content-Encoding" value="gzip">
</cfif>
<cfheader name="Content-Type" value="text/html; charset=ISO-8859-1">
<cfheader name="Content-Length" value="#len(compressedHTML)#" >
<cfcontent reset="no" variable="#compressedHTML#" />
<cfreturn />
내 GZIP 유틸리티 기능 :
<cfscript>
var result="";
var text=createObject("java","java.lang.String").init(arguments[1]);
var dataStream=createObject("java","java.io.ByteArrayOutputStream").init();
var compressDataStream=createObject("java","java.util.zip.GZIPOutputStream").init(dataStream);
compressDataStream.write(text.getBytes());
compressDataStream.finish();
compressDataStream.close();
if(arrayLen(arguments) gt 1){
result=binaryEncode(dataStream.toByteArray(),arguments[2]);
}else{
result=dataStream.toByteArray();
}
return result;
</cfscript>
나는 모든 페이지에서이 작업을 실행하는거야하고 잘 대부분의 시간을 작동은 상관없이 페이지 인 경우 직선 또는 AJAX를 통해 요청했습니다.
Diagnose: Attribute validation error for tag cfcontent. java.lang.String is not a supported variable type. The variable is expected to contain binary data. <br>The error occurred on line 338.
Browser: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
cfcontent
라인 :
그러나 가끔 다음과 같은 오류를 얻을.
질문 :
는이 페이지가 GZIP을 지원하거나 비활성화 GZIP하지 브라우저에 의해 요청 된 것일 수 있을까요? 왜냐하면 HTML은 압축 만되고 이진 코드화되지 않기 때문입니다.
그렇다면 압축 된 HTML을 이진 코드로 인코딩해야할까요?
둘 다 틀린 경우 가능한 경우 표시해주세요. 이처럼 ToBinary() 기능을 사용 cfcontent를 전달하기 전에 이진 당신의 변수를 변환
흠. 그건 간단하게 들리네 .-) – frequent
그래서 내가 gzipped (이미 인코딩 된) 여부를 확인해야 할 것 같아요, 아니라면, 귀하의 스 니펫을 사용합니다. 좋은 소리. 내가 필요로 할 때만 내 실수를 재현 할 수 있다면 ... – frequent