'Expires header'에 해당되는 글 2건

  1. 2010.04.20 Expire 해더의 미스테리
  2. 2007.10.01 웹사이트 속도를 높이는 방법2
사이트 튜닝과 개발자들의 개발 편의성을 위해  새로운 script  태그(사용자 지정 컨트롤)을 하나 만들었다.

시나리오대로 라면 expires 해더를 통해 스크립트가 브라우저 캐시가 되어야 하고 만료일 전까지는 Request를 보내지 않아야 한다.

fiddler 로 조사해 보니 해더에 분명히 expires 해더가 붙었는데도...이 놈이 요청을 보낸다.
브라우저의 캐시 폴더에 캐시가 저장되어있는데도 말이다....오 이런일이..왜 그런 것일까.

혹시 몰라 우선 304 리턴 부분을 만들어 두었다. 브라우저 캐시가 안된다면 304 라도 처리해야 체면이 선다.

Last-modified 해더와  Etag 도 설정해 봤는데 모두 같은 현상이다.
304 처리는 잘 되지만 만료일일 지정된 놈이 계속 요청을 보낸다. 미치겠다.

한가지 자료를 찾았다.
http://weblogs.asp.net/scottgu/archive/2006/04/11/Don_1920_t-run-production-ASP.NET-Applications-with-debug_3D001D20_true_1D20_-enabled.aspx

디버그 모드로 컴파일한 경우 axd  핸들러 내용이 캐시되지 않는다는 내용이 있다.
클라이언트의 웹사이트는 왠지 모르지만 디버그 모드로 운영중이라고 한다.(ㅡㅡ;)
나도 디버깅을 위해 디버깅상태로 테스트 햇으니 이게 유력한 용의자일까?
닷넷 개발자들의 편의를 위해 디버그 모드인 경우 수정된 내용이 바로 적용되도록 캐시를 무시하도록 처리되었다고 한다.
이제 debug=false 로 놓고 다시 테스트를 해본다.


삽질이였다.

테스트를 한다고 F5 키를 누르면서 한 것이 원인인듯 하다.
http://www.ibm.com/developerworks/kr/library/wa-aj-cache/index.html
이 자료를 보면 expires 가 설정된 경우라도 F5 를 누르면 IE는 요청을 보낸다.
그렇기 때문에 304가 계속 나온것이다.

F5 가 아닌 링크를 통해 페이지를 이동하는 경우 예상대로 요청을 보내지 않았다.
긴 삽질이였다.



신고

댓글을 달아 주세요

원문 :http://developer.yahoo.com/performance/rules.html

2. CDN 을 사용하라.

유저가 보다 빨리 컨텐츠를 땡겨 갈 수 있게 유저와 가까운 곳에 서버를 두라는 것인데, 즉 여러 IDC 에 똑같은 일을 하는 서버들을 분산 배치 시키고 유저가 가장 가까운 서버와 통신하게 하는 방법.
자세한 것은 잘 모르겠으나, 대형 사이트들은 대부분 이방법을 사용한다고 한다.

 The Importance of Front-End Performance 에서 언급한 응답시간의 80-90% 가 페이지의 구성요소(스타일시트, 자바스크립트, 이미지,플래시 등)를 다운로드 하는데 소요된다는 것을 참고로 다운로드의 속도 향상을 위해 CDN 을 쓰라는 것이다.
야후는 20% 이상 개선효과를 봤다고 한다.

하지만 이것은 돈이 드는 것이고, 사이트의 유저가 많거나 글로벌 서비스를 할때의 이야기인 듯.

3. Add an Expires Header

static 한 파일의 응답 해더에 Expires  해더를 셋팅하면 Expires 시간에 설정된 기간동안 브라우저 캐시한 컨텐츠를 사용하고 서버로 요청을 하지 않는다.
html,js,이미지파일 등에 대해 모두 적용가능하다.
단, 한번 설정된 파일은 지정한 시간까지 다시 서버에 요청을 하지 않으므로 업데이트를 해야 할 일이 있는 경우 파일의 이름을 변경해줘야 한다.
야후의 경우 js 파일 이름에 빌드넘버를 붙여 파일을 갱신하도록 한다고 한다.
(파일이름에 빌드넘버를 붙이는 이유를 잘 몰랐다가 이제야 알게됨..)

하지만 해더의 효과는 첫번째 방문하는 유저에게는 무의미하다.

신고

댓글을 달아 주세요

티스토리 툴바