2011-09-19 3 views
0

우선 불쌍한 영어를 유감스럽게 생각합니다. 먼저 시나리오를 설명해주십시오. Memcached에 gzip 데이터 그룹으로 저장된 데이터가 있습니다. 각 데이터를 호출합니다. 각각은 데이터베이스에서로드되고 압축되어 Memcached에 저장됩니다. 이 은 서비스를 사용하기 전에 준비 프로세스로 수행됩니다. (데이터베이스의 부하를 줄이기 위해)여러 개의 GZIP를 하나의 HTTP 응답으로 동시에 전송하십시오.

내 서버 코드는 Memcached에서 gzip 데이터를 가져 와서 즉시 gzip 데이터를 반환합니다.

사용자의 관점에서 볼 때 동시에 여러 청크를 요청할 수 있습니다. 예를 들어 Memcached에 10 개의 청크가 있다고 가정하면 사용자가 청크를 요청할 수 있습니다.이 경우 어떤 경우에도 gzip 파일을 응답없이 보낼 수 있습니다. 그러나 사용자가 동시에 많은 청크를 요청하면 나는 그걸 어떻게 처리해야하는지 모르겠습니다. 다수의 청크를 가져 와서 하나의 GZIP 파일로 압축하는 것은 해결책이 아닙니다 입니다. 나는 요청 된 gzip 파일을 하나의 요청으로 동시에 보내고 싶다.

내 첫 번째 생각은 데이터베이스에서 데이터를로드 한 다음 Memcached에 압축을 저장하지 않고 저장한다는 것입니다. 요청이 들어 오면 Memcached에 저장된 데이터를 가져 와서 압축 한 다음 다시 보냅니다. 그러나 응답을 생성 할 때마다 압축을 수행해야하므로이 작업을 수행하면 CPU가 낭비됩니다. 주기입니다. 그래서 저는 을 압축하지 말고 즉시 다시 보내고 브라우저는 여전히 내가 무엇을 보냈는지를 이해하고 있습니다. .

내 질문이 너를 괴롭히는 경우, 내가 그것을 자세히하려고 노력할 것임을 알려주십시오. 왜냐하면 난 정말 도움이 필요합니다.

+0

가능한 [두 개 이상의 gzip 파일/스트림을 연결하는 방법] (http://stackoverflow.com/questions/1143270/how-to-concat-two-or-more-gzip-files-streams) – cHao

답변

1

일부 데이터는 일종의 컨테이너 형식입니다. 청크 2 위한 청크 청크 청크의 데이터

  • 길이 2
  • 데이터를 데이터의 1
  • 길이 1
  • 데이터 : 즉 이루어진 하나의 응답을 전송하는 것처럼 간단 할 수있다

(각 청크는 이미 gzip으로 압축되어 있습니다).

또는 gzipped 청크 인 여러 개의 "파일"을 포함하도록 압축하지 않고 zip 파일을 만들 수 있습니다. 그것은 정말로 귀하의 고객이 그 결과로 무엇을 할 것인가에 달려 있습니다. 무엇 정확히 여기에 클라이언트가?

+0

우선, Jon에게 빠른 답변을 해주셔서 감사드립니다. 클라이언트는 일반적인 웹 브라우저입니다. 제안한 첫 번째 접근 방식에 대해서는 확실하지 않습니다. –

+0

@ s4510488 : 클라이언트가 일반 웹 브라우저 인 경우 결과를 사용자에게 표시하려는 방법을 고려해야합니다. Zip 파일이 최상의 선택일지도 모릅니다. –

+0

첫 번째 의견은 실수로 완료되지 않았지만 내가 묻는 내용을 이해하는 것으로 보입니다. 브라우저가 MIME 형식이 gzip 인 응답을 받으면 zip 파일의 내용을 압축 해제하고 구문 분석하여 사용자에게 제시합니다. 그렇지 않습니까? 브라우저가 gzip에서 gzip을 인식 할 수 있는지 여부는 확실하지 않습니다. –

0

HTTP 자체가 gzip 압축을 지원합니다. 나는 그것을 사용하는 것이 좋습니다.

관련 문제