수행 여부와 관련하여 현재 상황은 무엇입니까?
Transfer-Encoding: gzip
또는
Content-Encoding: gzip
내가 허용 할 때 클라이언트 예를 들어 제한된 대역폭가 수용 할 의지 신호를 압축 응답 과 서버가 있는지 여부 압축에 마지막 말을 .
후자는 예를 들어 Apache의 mod_deflate 및 IIS가 수행하는 작업입니다. 압축 할 콘텐츠의 크기에 따라 추가 작업을 수행합니다.Transfer-Encoding: chunked
.
또한 Vary: Accept-Encoding
이미 문제를 암시하는를 포함합니다 . Content-Encoding
엔티티의 일부인 것처럼 보이므로 Content-Encoding
금액을 엔티티의 변경, 즉 다른Accept-Encoding
헤더는 예를 들어 캐시가 다른 동일한 엔티티의 캐시 된 버전을 사용할 수 없음을 의미합니다.
내가 놓친 확실한 대답이 있습니까 (그리고 일부 아파치 뉴스 그룹의 긴 스레드에 메시지 안에 묻혀 있지 않습니다)?
나의 현재 인상은 :
- 실제로 Transfer-Encoding은 기존 서버 및 클라이언트 구현에 의해 대부분 Content-Encoding으로 수행되는 작업을 수행하는 올바른 방법입니다.
- Content-Encoding은 의미 론적 의미로 인해 몇 가지 문제가 있습니다 (서버가
ETag
응답을 투명하게 압축 할 때 어떻게해야 합니까?). - 그 이유는 chicken'n'egg입니다 : 브라우저가 지원하지 않기 때문에 서버가 지원하지 않기 때문에 브라우저가 지원하지 않습니다.
내가 올바른 방법을 가정하고 그래서 일 것이다 Transfer-Encoding: gzip
(I 추가 덩어리 몸,이 경우, 또는 이 될 것이다 Transfer-Encoding: gzip, chunked
). 그리고 이유는 만지지에 Vary
나ETag
그것이 전송 수준 일이 그 경우에 다른 헤더 나.
지금은 Transfer-Encoding
프록시가 압축을 풀고 압축되지 않은 상태로 클라이언트에 전달할 수 있기 때문에 다른 사람들이 가장 먼저 염려하는 것처럼 보이는 'hop-by-hop'성에 대해별로 신경 쓰지 않습니다 . 그러나 원래 요청에 적절한 Accept-Encoding
헤더 가있는 경우 프록시는 그대로 (압축) 전달할 수 있으며 , 이는 내가 아는 모든 브라우저의 경우 주어진 것입니다.
Btw,이 문제는 적어도 10 년이 지난 것 입니다. 예를 들어 https://bugzilla.mozilla.org/show_bug.cgi?id=68517을 참조 하십시오 .
이에 대한 설명을 주시면 감사하겠습니다. 표준을 준수하는 것으로 간주되는 것과 실용적인 것으로 간주되는 것 모두에서. 예를 들어, 투명한 "Content-Encoding"만 지원하는 HTTP 클라이언트 라이브러리는 실용성에 대한 논쟁이 될 수 있습니다.
Transfer-Encoding:gzip
명령 줄 curl이 이해 하지만 이해하지 못합니다 . 안전한 편이 되려면 chunked와 gzip을 결합하지 않는 한 둘 다 보내십시오.