@기진곰님의 슈퍼캐시 모듈을 서버로 확장해서 사용할 수 있다면 어떨까? 가능한 서비스 같고 또 실제 그렇게 구성해서 서비스 중인 곳도 있지 않을까 개인적으로 생각해 봤습니다.
현재 캐시설정시간이 있어 짧은 시간 만료 후 다시 방문자에게는 캐시된 화면이 아닌 실제 db까지 조회해야 하는 작업이 요구 됩니다.
다양한 문서가 분포된 커뮤니티 사이트에서는 어찌 보면 약간 효율이 떨어질 수도 있다고 생각해 봤는데요.
이를 극복하기 위해 아예 서버 한대를 캐시전용 서버를 두는 것 입니다. (모든 페이지를 html로 캐시해서 저장)
비로그인 방문장에게는 캐시된 화면만 보여주는 것입니다. 캐시만료시간이 아예 없습니다.
(얼핏 보면 이미지 CDN이 확대된 페이지 전체를 CDN 하는 것으로 아예 자체적으로 서버를 가지고 있는 것이죠.)
클라우드 플레어의 경우 캐시된 이미지를 다시 갱신요구를 해야 변경된 새로운 이미지로 바꿔주는 강력한 캐시를 제공합니다.
이렇게 아예 html을 캐싱해서 저장해 두고 비로그인 방문자들이나 봇에게는 이 빠른 html출력 화면만 보여주는 거죠.
db 갱신이 있을경우는 어떻게 하냐구요? 이러한 이벤트가 있는 페이지들만 트리거를 이용해서 캐시서버에게 새로 읽어가게 해주면 되지 않을까 상상해 봤구요..
이렇게 움직인다면 2만개의 문서가 축적된 커뮤니티라면 각 2만개 모든 문서가 활발하게 db변화가 일어나지 않을 거기에 대부분의 문서는 캐시된 빠른 화면만 비로그인 대상자들에게 뿌려주면 굉장히 빠른 응답을 보여줄 것이라 생각이 되어집니다.
모든 문서가 계속 갱신이 된다면 물론 캐싱작업 때문에 더 바빠지는 상황이 생길 수 ? 있다는 생각도 해봤지만 실제로 그런일은 없을 듯 하다는게 현실적인 생각이었습니다.
db없이 html로만 구성된 페이지들은 굉장히 빠릅니다. db구조를 가진 사이트를 html 페이지로 만들어주는 효과 ??
이런 서버가 구축이 가능하다면 본서버 + 캐싱서버 이렇게 해서 되지 않을까 생각해봤어요. 실제 이렇게 하는게 있나요 ?
캐시서버와 본서버가 같은 IDC내에 있다면 모를까 그렇지 않다면 오히려 성능저하가 있지 않을까 싶습니다. 그리고 지금도 캐시 설정시 외부서버를 지정하면 캐시서버와 본서버 분리가 가능합니다.