# 제작일지

캐싱 초보의 비애

개발
캐싱 초보의 비애

10월 24일에 적은 제작일지 에서 캐시 헤더를 추가했다고 적었는데, 일단 거기서부터 틀렸습니다.

제일 먼저 .htaccess를 수정해 코드를 작성했습니다. 제가 어드민이라 conf 파일을 수정할 수 있음에도요.

더 큰 문제는 서버에 캐시 헤더를 추가하기 위한 모듈이 설치되어 있었지만 저는 그 모듈을 활성화하지 않고 모듈이 활성화돼있으면 캐시 헤더를 설정하는 코드만 추가해뒀고, 당연히 캐싱은 제대로 작동하고 있지 않았습니다.

그제 그 문제를 깨닫고, mod_expires.c, mod_headers.c 두 모듈을 활성화하고, Expires HTTP 헤더와 Cache-Control HTTP 헤더를 설정해줬습니다.

여기서 문제가 다시 발생했는데, 제가 참고한 글에 html과 php에도 cache-control 헤더를 추가하라고 적혀있었던 겁니다.

제가 개발자 도구로 F5를 누르며 테스트한 결과, 제가 보고 있는 html 페이지는 계속 서버로부터 가져오기에, 별 의심 없이 html과 php에 604,800초(1주)간 캐싱 되도록 하는 헤더를 추가했습니다.

여기까지가 그제 일어난 일입니다.


어제 전 2개의 포스트를 발행했습니다. T 전화 테마 글과 자바스크립트에 관한 잡담이요.

이 과정에서 문제가 발생했는데, T 전화 글을 쓰면 자바스크립트 글이 관리 화면에서 사라지고, 화를 참으며 T 전화 글을 다시 쓰면 관리 화면에서 자바스크립트 글이 사라집니다.
심지어 무슨 짓을 해도 홈 화면엔 새 글이 표시되질 않습니다.
전 벌써부터 HDD가 맛이 가는 줄 알고 새 HDD를 주문해야 하나 깊은 고뇌에 빠집니다.

혹시나 하는 마음으로 Ctrl + Shift + R(캐시 지우며 새로고침)을 눌러봅니다.
홈 화면에 새로 적은 글이 표시됩니다.

알고보니 F5를 누르지 않고 a 태그로 페이지를 열거나, 주소창에 uri를 입력해 페이지를 열면 브라우저는 제가 시킨대로 열심히 캐시에서 해당 html 내용을 가져오고 있었습니다.
글이 계속 사라지던 이유도, 제가 103번째 글로 T 전화 테마 글을 작성하고 새 글을 작성하려 하면 캐싱된 php는 여전히 제가 103번째 글을 쓰는 줄 알고 자바스크립트 글을 T 전화 테마 글에 덮어써 버리며 발생하던 문제였습니다.

처음으로 악플을 달고 싶어지던 순간입니다.
도대체 왜 html과 php도 캐시 헤더를 추가하라고 한 건지…
근데 사생활 보호 모드에서 본 글이라 악플은 커녕 제가 무슨 글을 읽었는지 확인조차 할 방법이 없네요.

여하튼 황급히 서버 컴퓨터에 모니터, 키보드, 마우스를 연결하고 html과 php엔 0초짜리 Cache-Control 헤더로 수정하고, Expires 헤더도 0초로 수정했습니다.
재발 방지를 위해 어드민 페이지의 캐시는 전부 제거했습니다.
테스트용으로 T 전화 테마 글의 캐시는 서버에서 캐시를 날려버릴 수 있는지 테스트해보려고 살려뒀는데, 도무지 방법이 없네요.

아마 그제부터 어제 사이에 제 블로그를 방문한 이력이 있으시면 이미 제 모든 html파일이 캐싱 끝났을 테고, 이 글은 일주일 동안 보실 수 없을 겁니다.
물론 유례없는 로딩 속도를 보여주긴 하겠네요. 제 데스크탑에선 58밀리 초 만에 이미지를 포함한 모든 로딩을 끝내더라고요.

멘탈이 터져서 좀 두서없이 썼는데, 아무튼 결론은 “특별한 경우가 아니면 html과 php는 캐시 헤더를 추가하지 말자“입니다.

개발 카테고리 관련 글

위 글이 유용하셨다면, 아래 글도 읽어보세요!