웹서버에서 처리하는 파일의 종류는 크게 두가지입니다. PHP나 JSP, CGI와 같이 입력값 변수로 인해 결과물이 달라지는 동적 파일과 이미지, 음원, 비디오, 텍스트 문서등 파일 자체가 변하지 않는 정적 파일인데요.
동적 파일 같은 경우, 예를 들어 워드프레스에 캐시 설정을 하게 되면 댓글이나 새글을 포스트 했을때 그 페이지의 출력물이 변하게 되어 브라우저 캐시 설정을 하면 안되지만 이미지 같은 정적 파일 같은 경우 새로운 요청이 들어오면 서버에서 해당 파일을 응답, 전송 후 다시 같은 파일 요청이 들어오면 사용자 브라우저에서 캐시로 다운로드 받은 이미지를 뿌려줌으로써 웹서버의 속도와 동시에 트래픽을 절약할수 있는 방법입니다.
NGINX 정적 페이지,파일 브라우저 캐시 설정
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { expires 1M; access_log off; add_header Cache-Control "public"; } location ~* \.(?:css|js)$ { expires 1y; access_log off; add_header Cache-Control "public"; }
위에서 언급했다시비 이미지, 음악파일등 정적 파일을 위와 같이 설정한 다음 expires에 브라우저 캐시될 기간을 지정합니다.
파일 확장자마다 브라우저 캐시 기간을 다르게 하고싶다면 location 항목을 하나 더 만들어 다르게 설정할수 있습니다.
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { expires 1M; access_log off; add_header Cache-Control "public"; proxy_pass backend; } location ~* \.(?:css|js)$ { expires 1y; access_log off; add_header Cache-Control "public"; proxy_pass backend; }
만일 리버스 프록시 환경에서 NGINX에 캐시 헤더를 넣고 싶다면 같은 요령으로 위와 같이 설정하면 되겠습니다.
expires에 대한 자세한 옵션 항목은 NGINX 문서를 참조하세요.