워드프레스 php 파일 수정 후 바로 적용되지 않을 때

목차
1. 바니시 캐시(Varnish Cache) 역할
2. 워드프레스에서 파일 수정 시 겪게 되는 현상
3. 해결방법


워드프레스에서 functions.php, header.php 등 각종 php와 파일들을 수정한 후 바로 반영되지 않는 경우를 종종 경험하게 된다. 보통은 첫 수정은 바로 적용되는데, 두 번째 수정부터는 몇 시간 혹은 며칠이 지나야 반영되곤 한다.

처음에는 브라우저의 임시파일과 캐시 때문인가 싶어 해당 부분을 지워보기도 하고, 컴퓨터나 핸드폰을 껐다 켜 보기도 했지만 특별히 달라지지 않았다. 그러다가 이게 바니시 캐시(Varnish Cache) 때문에 생긴 문제임을 알게 되었다.

관련한 여담이지만, Purge Varnish Cache라는 플러그인의 목적은, "업데이트된 콘텐츠가 사용자에게 지연 없이 제공되는 것"이라고 한다(The main purpose of developing this plugin is to deliver updated copy of content to end user without any delay). 어쨌든, 해당 현상에 바니시 캐시가 관련되어 있음을 다시 한번 확신하게 해 준 문구.

1. 바니시 캐시(Varnish Cache) 역할

바니시는 웹 브라우저(클라이언트)와 웹 서버의 중간에 위치한다. 브라우저가 서버에 정보를 요청하면 바니시는 요청된 모든 정보의 복사본을 저장해 둔다. 그리고 이후에 동일한 정보에 대한 요청이 들어오면 서버가 아닌 바니시에서 요청을 처리하게 된다. 결과적으로 서버가 해당 요청을 수행하는 데 필요한 리소스와 시간을 절약하게 되어 웹 사이트의 속도를 높여 준다. (참고: support.cloudways.com)

⚙ 웹 서버 (워드프레스)

💡 바니시 캐시

💻 클라이언트 (웹 브라우저)

2. 워드프레스에서 파일 수정 시 겪게 되는 현상

일반적으로, 워드프레스 관리자 모드에서는 php 파일을 짧은 시간에 여러 번 수정해도 바로 적용된 모습으로 보이고(서버), 로그아웃한 상태로 방문자 모드로 워드프레스에 접속하면 적용되지 않은 모습으로 보인다(클라이언트). 이는 수정된 php 파일이 서버에 저장이 된 것은 맞지만 바니시에는 적용되지 않았기 때문에 클라이언트(방문자 웹 브라우저)가 바뀐 내용을 볼 수 없는 것이다.

보통, 특정 파일에 대해 처음 혹은 오랜만에 수정을 하면 바니시에 곧바로 전달되어 적용되는데, 같은 파일을 연이어 수정하게 되면 바니시에 바로 적용이 되지 않는다. 수시로 이루어지는 모든 수정 내용을 바니시가 그때그때 갱신한다면 효율적인 캐시를 운용이 되지 않기 때문인 것 같다.

3. 해결방법

보통은 일정 시간이 지나거나 특정 상황이 되면 바니시 캐시가 자동 갱신되도록 설정되어 있기 때문에 기다리면 해결된다. 다만, 수정한 내용을 바로 적용해야 한다면 수동으로 바니시 캐시를 비워 주어야 한다.

일반적으로 글 수정 및 발행 그리고 댓글이 발생했을 때에는 바니시 캐시가 자동으로 갱신되게 설정되어 있지만, php 등의 파일은 그렇지 않기 때문이다.

바니시 캐시를 비우는 방법은 서버 관리 페이지 또는 바니시 캐시의 관리가 가능한 플러그인을 통해서 가능하다.

3-1. 서버 관리 페이지의 경우 (feat. 클라우드웨이즈)

  • 서버 관리 페이지(platform.cloudways.com) > Server Management > Manage Services > Varnish - Purge
  • 또는, 워드프레스에서 (클라우드웨이즈 기본 제공) 캐시 플러그인 Breeze를 이용해 특별한 설정 없이 (클라우드웨이즈에서 설정이 된 채로 사용자에게 제공됨) Purge Varnish Cache 버튼 누르기. 또는 Purge All Cache를 눌러 모든 캐시를 지워준다. 캐시 플러그인을 사용하는 것이 편하기 때문에 주로 이 방법을 이용하는 편
purge varnish cache in server management of Cloudways
서버 관리 메뉴에서 Varnish Purge

3-2. 캐시 플러그인의 경우 (feat. Breeze)

purge varnish cache in breeze plugin menu
워드프레스 breeze 플러그인에서 Varnish 메뉴
purge varnish cache in breeze plugin
워드프레스 상단 메뉴바에서도 breeze 플러그인 접근 가능


캐시를 비웠으면, 마지막으로 웹 브라우저에서 새로고침(Ctrl+F5)을 통해 확인해 보면 된다. 참고로, 'F5'는 브라우저 캐시를 바탕으로 갱신되고 'Ctrl+F5'는 브라우저 캐시와 상관없이 정보를 새로 내려 받아 갱신한다.

이런 상황을 몰라서 php 수정 후에 언제 적용되나 눈 빠지게 기다리기만 했던 나의 모습이 생각난다.


카테고리의 다른 글

  1. 클라우드웨이즈 파일 및 폴더 권한(퍼미션) 재설정하기
  2. 워드프레스에서 이미지 외곽선(CSS)을 선택적으로 넣기 (GeneratePress)
  3. 티스토리 스퀘어 스킨, 새 글 new 아이콘 이미지 찌그러짐 해결하기 (Square Final 1.1.1)
  4. 워드프레스 이메일 발송 시 보내는 사람 이름 바꾸기 (feat. 문의 양식 7)
  5. 클라우드웨이즈(2GB) 워드프레스의 페이지 경험, 코어 웹 바이탈 (구글 서치 콘솔)

댓글 남기기