지금은 매 시간 매 순간마다 타임라인이 모든 글을 읽어들여서 추천이나 댓글 조건에 부합하는걸 가져오잖아요?

 

만약에 타임라인 모듈이 5분이라는 캐시시간을 가져서

한번 읽어들인 후 5분동안 쉬었다가 5분 후 다시 글을 읽어들이고 한다면 부하를 줄이는데에 큰 도움이 되겠죠?

 

그래서 메인 페이지에 있는 위젯도 캐시시간을 주는걸로 알고 있는데,,

 

이상 컴알못이 지금까지 하고있던 생각을 적어보았습니다,,,

  • profile

    다른 건 그대로 두고 COUNT(*) 쿼리 결과만 캐싱해도 부하가 절반 이상 줄어들 것입니다.

     

    슈퍼캐시 모듈의 게시판 캐시 기능을 사용하면 COUNT(*) 쿼리를 줄여 주는 효과가 있는데, 타임라인은 이걸 무시하고 또다른 COUNT(*) 쿼리를 유발합니다. RXE에서 게시판 관련 부하의 60% 이상은 COUNT(*) 쿼리입니다.

  • profile profile
    와 상세한 답변 감사합니다!!
  • profile ?
    프로그래밍을 잘 모르지만 왜 굳이 무시하는걸까요? 아니면 무시 할수 밖에 없었던가요?
  • ? profile

    무시한다기보다는... 타임라인 모듈이 나왔을 당시에는 getDocumentList 트리거가 존재하지 않았으므로 게시판 모듈에서 기껏 불러와 놓은 글 목록을 폐기하고 다시 쿼리하는 방식으로 구현할 수밖에 없었습니다.

     

    다시 쿼리하더라도 코어의 getDocumentList 함수를 파라미터만 바꾸어 다시 호출하는 방식이었다면 코어에서 제공하는 트리거를 통해 슈퍼캐시가 끼어들 수 있을 텐데, 타임라인 모듈은 2014년 말 기준으로 코어의 소스를 복붙+커스터마이징하여 별도로 구현했기 때문에 지난 5년여간 코어에서 개선된 사항이 반영되지 않습니다. 자체 제공하는 트리거가 없으니 슈퍼캐시에서 끼어들 수도 없고요.