2011-11-21 3 views
10

HTTP 응답 헤더에 "Keep-alive"가 없다는 것을 강조한 Google의 Page Speed ​​API를 사용하여 내 웹 응용 프로그램을 최적화하려고합니다.부하 분산 장치와 연결 유지 기능을 활성화 할 수 있습니까?

로드 백커를 사용하기 때문에 백엔드 개발자 및 시스템 관리자와 이야기하면서 사이트에서 Keep-Alive를 사용할 수 없다고 말했습니다.

이 정확합니까? Keep-alive를 지원하는로드 밸런서가 있습니까?

Page Speed ​​API가로드 밸런서와 함께 사용할 수 없다면 Keep-alive에 대해 불평 할 것입니다. 많은 응용 프로그램과 대규모 사이트가로드 밸런서를 사용한다고 생각하기 때문에 이상합니다.

감사합니다.

+0

HAProxy로 전환하고 HTTP 영구 연결을 사용하도록 설정합니다. :) – bzlm

+0

실제로 성능 차이가 발생하거나 응답 헤더에 연결 유지를 설정합니까? –

+0

HTTP 지속 연결이 정확히 무엇인지 모르는 경우 백엔드 개발자와 시스템 관리자에게 HTTP 연결을 구현하도록 요청하지 않아야합니다. – bzlm

답변

5

로드 밸런서 유형이 어떤지 잘 모르겠지만 연결 유지 연결을 사용할 수 없다고 생각하지 않습니다.

부하 분산 장치는 백엔드 서버 중 하나에 들어오는 각 연결을 처리합니다. 이제 각 객체에 대해 브라우저는 해당 객체를 가져 오기 위해 새로운 연결을 생성해야합니다 (예 : 모든 작은 이미지). TCP 연결을 설정하고 닫는 데는 어느 정도 시간이 걸립니다. 이것이 Google Page Speed가 연결 유지 기능을 사용하도록 제안한 이유입니다. 또 다른 옵션은 모든 작은 이미지를 하나의 큰 이미지에 넣고 CSS 스프라이트를 사용하여 페이지의 다른 위치에 부분을 표시하는 것입니다.

하지만 다시로드 밸런서로. 네트워크로드 밸런서가있는 경우 질문없이 작동해야합니다. 들어오는 TCP 연결을 백엔드 서버 중 하나로 리다이렉트합니다. HTTP로드 밸런서를 사용하는 경우 연결을 허용하고 요청을 읽고 요청을 백엔드 서버로 보내고 응답 할 때까지 기다렸다가 응답을 브라우저로 다시 보냅니다. 연결 유지를 활성화하면로드 밸런서는 동일한 연결을 통해 수신되는 다음 요청을 전달해야합니다.

동적 페이지의 경우 연결 유지가 필요하지 않습니다. Keep-alive는 일반적으로 정적 컨텐츠 (js, images, css)에 유용합니다. 일반적으로 10 개 이상의 정적 오브젝트가있는 각 html 페이지와 같습니다. 그래서로드 밸런서를 계속 사용하고 다른 호스트 이름 (static.example.com)을 통해 정적 컨텐츠를 제공하는 것이 좋습니다.

관련 문제