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는 캐시 헤더를 추가하지 말자"입니다.

profile

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

(?)

  1. 어쩐지 마샬님 블로그 들어와도 새까만 화면만 나오더니... 마샬님이 공유해주시는 정보 글같은 거 못 볼까 얼마나 심장이 두근거렸는지 몰라요 흑흑... 그래도 고쳐져서 다행이네요!!

    1. 주인장이 무능한 탓입니다...ㅠㅠ
      그래도 F5만 누르면 고쳐지는 나름 간단하다면 간단한 문제여서 다행이지 싶네요. 😅

  2. 애꿎은(?) HDD를 살뻔 했군요~ ㄷㄷㄷ

    1. HDD 문제라기엔 다른 건 다 너무 멀쩡해서 이상하긴 했습니다. ㅋㅋㅋㅋ