Julian Ju

캐시가 잘되는지 확인, 그리고 간단한 troubleshooting

Blog Post created by Julian Ju Employee on Jul 29, 2015

캐시 설정을 해서 올려놓고나면 잘 동작하는지 테스트를 하고 싶어지잖아요?

아카마이CDN으로 캐시하게 되면 잘 돌아가는지 확인하기 위해서는 여러방법으로 확인이 가능합니다만, 저는 보통 크롬 브라우저에 Modify Headers for Google Chrome 이라는 extension을 깔아서 테스트 합니다.

크롬을 열고 chrome://extensions 라는 주소로 들어간다음, 맨 아래 가면 Get more extension (혹은 뭐 한글로 나올수도..) 이 있으니 거기서 Modify Header 찾으시면 나옵니다.

설치하면 대략 아래와 같이 나오는데요... (왜 제꺼에선 Warning이 나오는지.)

 

여튼 설치되고나면 주소창 오른쪽에 버튼이 생기니까, 그걸 누르시면 됩니다. 그럼 새로운 탭이 열리고... 거기서 Add New 버튼을 누르시고요.

그런다음 Pragma라는 헤더를, akamai-x-cache-on, akamai-x-get-cache-key 라는 값으로 추가해주시면 되겠습니다.

 

이걸 켜고 CDN을 쓰고 있는 사이트에 접속을 하면 .... 페이지는 그냥 똑같이 나옵니다. (당연하죠)

 

그런데 크롬 개발자 도구 탭에서 > 네트워크에 가보시면!

이런 헤더가 나타납니다. 야호.

여기서 값에 TCP_MISS가 나오면 캐시가 안된 컨텐츠가 내려왔다는 뜻이죠. 캐시가 되어야 되는데 저렇게 나오면... 한번 더 페이지 열어봅니다.

두번째로 열었는데 TCP_MISS말고 TCP_HIT이나 TCP_MEM_HIT이 나오면 캐시가 되어서 나온다는거니까, 제대로 캐시 설정이된거죠.

 

만약, 캐시가 되어야 될것같은데도 불구하고, 계속 새로 고침 할때마다 TCP_MISS가 나온다면?....

 

이럴 경우에는 가능한 이유가 한두개가 아닌데요 -_-;;;

먼저 아래의 내용을 확인하는게 필요합니다.

 

1. 오리진 server에서 응답시 Cache-Control: no-store 헤더를 내려주는경우

-> 이 경우 아카마이 설정에서 시간을 잡아놔도 캐시가 안됩니다. (default설정은 오리진의 Cache-Control헤더가 우선이거든요). 이럴 경우에는 해당 페이지의 Cache-Control 헤더를 없애거나 원하는 캐시 시간값으로 Cache-Control: max-age=3600 처럼 해줘야겠죠.

 

2. 오리진 server에서 응답시 Vary 헤더를 내려주는 경우

-> 아카마이 엣지 서버는 오리진에서 내려온 응답에 Vary헤더가 있을 경우, (Vary: User-Agent 라든가) 해당 컨텐츠를 캐시하지 않습니다. Vary: Accept-Encoding의 경우에는 캐시하지만 이외에는 어떤 값이든 간에 해당 URL의 캐시는 안된다고 보면 되겠습니다. 이 경우 오리진 서버에서 Vary: Accept-Encoding이외의 Vary는 되지 않도록 설정하는게 필수죠.

 

3. 은근 자주 있는 경우인데요. 캐시설정에 URL가 쿼리스트링을 포함하게 해놓고, 매번 부를때마다 쿼리스트링이 변경되는 경우.

-> 어떤 페이지에서는 css나 js파일을 호출할때 무조건 현재시간을 쿼리스트링에 붙여서 호출하는 경우가 있는데요 (아마도 사용자의 브라우저 캐시를 피할려고...) , 이경우에는 아카마이에서 캐시된 결과가 있음에도 불구하고 새로운 파일인줄 알고 또 오리진에서 가져오게 됩니다. 이런 경우에는 캐시 설정에서 쿼리스트링을 제외하는게 낫겠죠.

 

이외에도 캐시가 의도대로 안된다면... 커뮤니티에 물어보시는게 좋을것 같습니다. ^^

Outcomes