캐싱키 구성하기¶
HTTP에는 콘텐츠를 구분하는 다양한 옵션(=헤더)가 존재한다. 그만큼 캐싱키 도 다양하게 존재할 수 있다. 캐싱키 란 콘텐츠를 구분하는 고유 값으로 URL과 혼동되기 쉽다.
Note
기본 캐싱키는 대소문자를 구분하는 쿼리스트링을 포함하는 URL에 Accept-Encoding 헤더를 반영하는 정책이다.
HTTP의 여러 기능에 따라 같은 URL이라고 하더라도 콘텐츠가 달라질 수 있기 떄문에 효과적인 캐싱키 를 설정해야 캐시 히트율을 높일 수 있다. 이에 따라 원본서버 요청URL과 캐싱키가 다음과 같이 결정된다.
설정 |
클라이언트요청URL |
원본요청URL=캐싱키 |
---|---|---|
대소문자 구분 |
/Image/LOGO.png |
/image/logo.png |
대소문자 구분 |
/Image/LOGO.png |
/Image/LOGO.png |
QueryString 구분 |
/view/list.php?type=A |
/view/list.php |
QueryString 구분 |
/view/list.php?type=A |
/view/list.php?type=A |
wholeClientRequest 를 true
으로 설정하면 다음과 같이 캐싱키와 상관없이 클라이언트가 보낸 URL을 그대로 원본에 보낸다.
설정 |
클라이언트=원본요청URL |
캐싱키 |
---|---|---|
대소문자 구분 |
/Image/LOGO.png |
/image/logo.png |
대소문자 구분 |
/Image/LOGO.png |
/Image/LOGO.png |
QueryString 구분 |
/view/list.php?type=A |
/view/list.php |
QueryString 구분 |
/view/list.php?type=A |
/view/list.php?type=A |
POST 요청을 캐싱하는 경우 원본서버로 요청할 때 클라이언트가 보낸 POST요청의 Body데이터가 수정없이 전송된다.
Accept-Encoding 헤더¶
같은 URL에 대한 HTTP요청이라도 Accept-Encoding
헤더의 존재 유무에 따라 다른 콘텐츠가 캐싱될 수 있다.
원본서버에 요청을 보내는 시점에 압축여부를 알 수 없다.
응답을 받았다고해도 압축여부를 매번 비교할 수도 없다.
See also
대소문자 구분¶
원본서버의 대소문자 구분여부를 능동적으로 알 수 없다.
See also
QueryString 구분¶
QueryString에 의하여 동적으로 생성되는 콘텐츠가 아니라면 QueryString을 인식하는 것은 불필요하다. 아무 의미없는 Random값이나 항상 변하는 시간 값이 매번 붙는다면 원본에 엄청난 부하가 발생할 수 있다.
See also
POST Method 캐싱¶
POST 요청을 캐싱하도록 설정한다. POST 요청의 특성상 URL은 같지만 Body데이터가 다를 수 있다.
See also
postMethod 캐싱키 설정
postMethod 바이패스 설정
hook 실시간 Body파싱모듈 연동