나는 학습을 위해 HTTP 라이브러리없이 파이썬에서 HTTP 서버를 만들고 있습니다. 지금은 정적 파일을 잘 처리 할 수 있습니다.Python의 TCP 소켓을 통해 gzip 압축 데이터 보내기
나는 파일을 제공하는 방법은 코드의 조각을 통해 :
with open(self.filename, 'rb') as f:
src = f.read()
socket.sendall(src)
그러나, 나는 대신 압축의 압축 된 데이터를 전송하여 성능 조금을 최적화 할 수 있습니다. 나는 그것이 헤더 그래서
Accept-Encoding: gzip, deflate, sdch
에서 저를 알려주기 때문에 브라우저 (크롬) 데이터를 압축 수락 것을 알고,이
with open(self.filename, 'rb') as f:
src = zlib.compress(f.read())
socket.sendall(src)
에 내 코드를 변경하지만 이것은 단지 쓰레기를 출력합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
적절한 'Content-Encoding = gzip' 헤더를 보냈습니까? –
예, 있습니다. GET 요청에서 반환하는 데이터는 헤더 다음에 2 개의 CRLF와 압축 된 본문이옵니다. 이것은 쓰레기를 출력합니다. 헤더 (헤더 포함)를 모두 압축하면 브라우저가 대신 파일을 다운로드합니다. – user5508097