2011-09-10 5 views
3

json을 나머지 API의 일부로 사용하려면 express 'res.end 등을 사용하고 있습니다.nodejs expressjs gzip json 콘텐츠

Google 페이지 스피드는 gzip으로 알려줍니다. 그러나이 스레드에 따라

:

http://groups.google.com/group/express-js/browse_thread/thread/db1ad3307cb4f504/64f02170f616527c

좋은 생각이 될 것 같지 않습니다. 모든 콘텐츠가 동적이어서 캐시 할 수 없기 때문에 모든 요청 전에 gzipping하는 것이 순이익처럼 보이지 않습니다.

맞습니까? 또는 gzip을 수행해야합니까, 감사합니다.

명확해야 : 정적 콘텐츠 (css, js)는 이미 gzip되어 있습니다.

답변

5

Gzip은 느린/모바일 연결에서 특히 브라우저에서 수신해야하는 데이터 (및 패킷 양)를 줄이므로 사이트 성능에 큰 차이를 만들 수 있습니다.

Express의 특정 구현에 대해서는 잘 모릅니다. 그러나 Gzip을 사용하는 것은 서버 CPU 시간과 대역폭 간의 균형입니다. 서버에서 CPU 사용량을 약간 늘려 콘텐츠를 압축하지만 대역폭 사용, 페이지로드 시간 및 브라우저에 데이터를 보내는 동안 웹 서버가 소켓을 열어 두어야하는 시간을 줄입니다. 모든 Best Practice 가이드 및 페이지 속도 분석 소프트웨어 (예 : Google 페이지 속도, 웹 페이지 테스트 등)는 Gzip을 사용하는 것이 강력하게 권장되므로 노력할 가치가 있다고 생각합니다.

Express에서 구현하는 방법에 관해서는 개인적으로 Nginx를 사용하여 Express 패키지에 대한 모든 요청을 프록시 처리하고 정적 컨텐츠를 제공합니다. 그래서 간단히 Nginx를 HTML, CSS, Javascript 및 기타 리소스 유형을 gzip으로 구성했습니다 그들을 클라이언트에게 보냅니다.

일부 참조 :

+0

당신이 모든 요청하기 전에 gzip을하십니까 (가능한 단점에 대한 제프 앳 우드의 답변을 참조)? – Harry

+0

예, 모든 페이지는 클라이언트로 다시 보내기 전에 실시간으로 압축됩니다 (그리고 Gzip이 활성화 된 거의 모든 사이트에서 사용). 몇 시간 동안 변경되지 않는 정적 리소스가 있으면 대개 디스크에 미리 압축하고 Nginx가 브라우저에서 지원하는 경우 .gz 버전을 보내도록 지시합니다. – MartinodF

+0

일부 웹 gzip 구현에는 페이로드가 최소 크기 (예 : 1K 또는 그 이상)를 초과하는 경우에만 text/plain, text/html, application/json, application/xml 등의 텍스트 형식 만 압축 할 수있는 옵션이 있습니다. 이렇게하면 압축률이 낮은 파일을 압축하지 않아도됩니다. 또한 압축 후 파일 크기가 작아지지 않으면 압축되지 않은 버전을 보낼 수도 있습니다. –