2009-03-18 5 views
9

나는 내 AJAX 호출로 진행되는 이상한 것을 좁히려 고하고있다. 내 PHP 스크립트는 다음과 같이 시작합니다.gzip 인코딩이 JSON과 호환됩니까?

ob_start("ob_gzhandler"); 

HTML과 잘 어울립니다. 하지만 application/json 데이터로 수행하는 데 문제가 있습니까? 누구든지 알고있는 브라우저 문제?

+0

나를 위해 잘 작동합니다. 그것은 정확하게 콘텐츠 인코딩 gzip으로 json 데이터를 PHP 5.5.15 –

답변

7

필자는 그렇게 생각하지 않습니다. 이전에 gzip으로 압축 된 JSON으로 저장된 정적 파일을 사용했으며, AJAX에서 제대로 작동했습니다. 편집

:는 나는 이러한 헤더 포함했다 않았다 특별한 내 PHP 스크립트와 유일한 체크 : 뭔가에 콘텐츠 형식을 변경하려고 할 때마다 만약 내가 기억

Content-Encoding: gzip 
Content-Type: text/plain 

, 즉 JSON을 나타내면 클라이언트에 문제가 있습니다.

+0

에 보내줍니다. 흥미 롭습니다. 나는 json을 위해 무엇을해야하는지 생각했기 때문에 application/json을 사용한다. – Jordie

+0

내가 가진 정확한 문제를 기억하려고합니다. AJAX가 마음에 들지 않았지만 디버깅을 위해 파이어 폭스는 text/plain과 잘 동작하는 반면에 파이어 폭스는 애플리케이션/JSON을 어떻게 표시해야할지 모르기 때문에 큰 어려움이 있었다. –

+0

("디버깅"에 의해 JSON URL을 내 브라우저에서 직접 보는 것이 아니라 응용 프로그램의 AJAX 부분에 중단 점을 넣음으로써) –

2

브라우저에서 을 요청 헤더에 넣을 때마다 gzip으로 압축 된 콘텐츠를 제공 할 수 있습니다. 이 경우 JSON과 HTML간에 차이가 없으므로 아무런 문제가 발생하지 않습니다.

3

특정 버전의 IE6과 같은 일부 오래된 브라우저는 gzip으로 압축 된 콘텐츠, 특히 js 콘텐츠를 엉망으로 만듭니다.

그냥 그 또한의 브라우저에서 보낸 헤더를 확인해야합니다

Content-Encoding: gzip 

이며, 서버가 올바른 컨텐츠 인코딩 헤더를 전송하는지 확인 적절한 동의를 인코딩 gzip으로 압축 된 내용을 전송하기 전에 헤더를 ... 즉 ,

대신 PHP에서 압축을 가능하게
Accept-Encoding: gzip,deflate 
+0

하지만 ob_gzhandler가 올바르게 수행하고 있습니까? – Jordie

+0

그게 ob_gzhandler의 아이디어입니다. – Jayrox

1

, 난 당신이 여러 호환되지 않는 브라우저를 확인에만 이용 약관을 읽고 동의를 브라우저에 대한 압축 된 데이터를 전송하고 정확한 처리 할 수 ​​있도록 (mod_deflate를 사용) 아파치의 압축을 활성화 할 어.

http://httpd.apache.org/docs/2.0/mod/mod_deflate.html

+1

그게 ob_gzhandler가하는 일입니다. 나는 프로그래밍 방식의 제어를 선호한다. – Jordie