node.js에서 js같은 파일을 압축전송하는 방법을 알고 싶습니다.

조회수 769회

이거 비슷한 질문을 몇번 하고 삭제하면서 따로 검색한결과 제가 원하는 과정이 압축전송이란걸 알게 되었습니다.. 그래서 결론은

gzip을 이용한 압축전송 방법에 대해 알고싶습니다. 찾아봐도 제대로 배운게 없으니 잘 모르겠네요...

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 특별히 사용하는 웹프레임워크가 있나요? doodoji 2019.8.6 20:23
  • Grunt? Gruntfile.js 이게 웹프레임워크가 맞았었나요? 찾다보니 얻어걸려서 Grunt로 하는방법도 찾고있긴한대.. 알 수 없는 사용자 2019.8.8 09:57
  • Grunt는 task 관리 및 실행기 입니다. Grunt로 뭘 한다는 건 일종의 메타프로그래밍이고 그걸 노드로 하는것.... 뿐 이고요. 그것과 상관없이 노드 서버를 만드셨다면 서버 프레임워크를 썼는지 여쭤본거에요. express나 hapi 같은... doodoji 2019.8.12 13:28
  • 찾고 물어보니 sails를 쓰고 있습니다.. html, css, jquery나 어느정도 배운수준이고 이쪽은 처음 접해보는거라.. 몰랐네요.. 감사합니다. 알 수 없는 사용자 2019.8.12 13:59

2 답변

  • gzip은 웹서버 설정으로 처리합니다. 아파치를 쓰신다면 이 글을, NGINX를 쓰신다면 이 글을 읽어보세요.

    • 감사합니다.. 하지만 둘다 저에겐 맞지 않네요.. 지금은 Grunt로 하는방법을 찾고 있습니다. 알 수 없는 사용자 2019.8.8 14:42
  • 그냥 기본만 알려드리면

    https://nodejs.org/api/zlib.html

    zlib를 쓰시면 되고

    파일을 읽는 파일 스트림 객체에 파이프 연결로 gzip과 response 객체를 순차적으로 연결하면 됩니다.

    그리고 브라우저에서 제대로 받기 위해서는 응답 header값에 'Content-Encoding': 'gzip'을 써서 내려주시면 되고요.

    const zlib = require('zlib');
    const http = require('http');
    const fs = require('fs');
    http.createServer((request, response) => {
        const raw = fs.createReadStream('something.js');
        response.writeHead(200, { 'Content-Encoding': 'gzip' });
        raw.pipe(zlib.createGzip()).pipe(response);
    }).listen(3000);
    

    노드만으로 이 모든것이 당연히 가능하지만,

    실제 서비스 단계에서는 이런 정적 리소스들의 추가 세팅은 @엽토군 님의 말씀처럼 웹서버 설정으로 처리하는 것이 더 일반적입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)