수퍼캐시 모듈의 경우 전화화면 캐시라는 기능을 제공합니다.
메인 페이지를 포함한 모든 페이지에 비회원에게는 캐시된 화면을 캐시가 만료되기 전까지 제공하여 db에 쿼리하거나 하는 등의 과정을 생략하여 서버의 자원을 절약하고 요청한 화면의 빠른 응답시간으로 제공할 수 있습니다.
그런데 여기서 한가지 주의할 점이 있습니다.
비회원에게만 적용되는 이유는 회원의 경우 화면에 표시되는 것들이 회원이 가지는 값들을 표시하는 부분들이 있어 캐시된 회원의 값들이 캐시되어 다른 회원에게 보여서는 안되기 때문입니다.
회원에게는 이러한 전제화면 캐시를 제공하기 어려운 부분이 있어 아예 제외되어 이러한 문제를 만들지 않지만 비회원에게도 이런 비슷한 문제가 발생할 수 있습니다.
그러한 사례는 바로 쿠키에 따라서 화면을 다르게 보여주기 위한 기능이 있다면 동일한 문제가 발생합니다.
예를 들면 다크모드,라이트모드 전환을 방문자가 요청한 버튼을 누를때 요청한 색상모드의 쿠키값을 브라우저에 저장을 하고 이 값을 기준으로 다크모드 혹은 라이트모드 색상을 위한 코드가 진행되게 됩니다. 그런데 슈퍼캐시에서 이러한 쿠키값에 대한 별도처리 설정을 하지 않으면 쿠키값과 무관하게 캐시될때 적용된 색상모드의 코드가 캐시되어 이후 비회원 방문자가 브라우저에 색상모드 쿠키값을 저장하고 요청하여도 변경된 색상모드에 맞는 코드 진행이 된 페이지가 출력되지 않습니다.
캐시를 해서 똑같은 화면을 즉시 보여주기 위한 전체화면 캐시의 기능이기 때문에 너무 당연합니다.
따라서 쿠키에 따라서 다른 화면을 보여주거나 한다면 그 쿠키는 슈퍼캐시모듈의 전체화면캐시 설정의 하단의 별도로 캐시할 쿠키 항목에 등록을 해 주어야 합니다.
예를 들면 다크,라이트 모드의 값을 구분하는 라이믹스 자체 쿠키값을 레이아웃에서 사용하여 색상모드를 판별한다면
rx_color_scheme 쿠키를 등록해 주어야 합니다. 브라우저가 가지는 쿠키의 id는 개발자도구(F12) 에서 확인할 수 있습니다.
만약 전체화면 캐시를 사용하여 비회원에게 빠른 화면을 제공해 주고 싶은데 다크모드,라이트모드 전환이 비회원에게는 제대로 작동하지 않는 다면 위와 같은 조치를 해주면 됩니다.
이러한 설명은 색상모드 문제뿐 아니라 다른 쿠키를 사용한 기능에 동일한 문제가 발생할 경우 똑같은 방법으로 처리해 주어야 합니다.
PS. 개인적으로는 전체화면캐시 사용을 해야 할 정도로 느리다면 개선이 필요하며 전체화면 캐시는 사용하지 않는 것을 추천드립니다. 굉장히 부담이 커질수 있는 게시판 캐시의 사용으로도 충분히 슈퍼캐시의 역할로서 충분하다고 생각합니다.