@inJin 님의 "문서의 스크랩 횟수를 표시하고 싶으면 어떻게 해야할까요?" 글을 읽어보고 순수한 궁금증으로 보다가 애드온으로는 구현이 힘들고 (스킨으로 변수 전달 불가, 치환자 써야 하나 퍼포먼스 저하) 제일 적합한 방법은 위젯이라는 결론을 내렸습니다. (딱 숫자만 리턴하는 위젯...)

 

그런데, 위젯이 효율적일 수 있는 조건인 캐싱에서 문제가 조금 생겼어요. 캐싱은 위젯에 따라가는 srl값 기준으로 진행이 되는데, 그러면 캐싱 시간 내로 조회되는 모든 글의 스크랩, 신고수가 통일되어버리는 문제가 (...) 생각나서 생각중인데 글마다 xe sequence를 새로 요청하는건 너무 오바인 것 같고... srl 값을 글과 동일하게 하거나 글의 앞뒤에 솔트개념의 랜덤숫자를 붙여서 페이크 srl을 만들기도 뭔가 좀 그런 것 같아서.. 만약 위젯과 글의 srl을 같게 한다면 위젯쪽이나 글 쪽에서 반드시 문제가 있겠죠? (사실 xe_sequnce 테이블을 좀 보니 그냥 global한 uid 만드는 테이블 같기도 하고... 글 수정할때마다 srl 받아와도 큰 문제 없을 것 같기도 하고 그러네요...)

  • profile
    썸네일 같은 경우는 종류를 가리지 않고 srl값만을 기준으로 생성합니다. 그래서 데이터 이전 도중 srl값이 겹치면 엉뚱한 썸네일이 나올 수도 있어요. 그 밖에도 코어 여기저기에 srl은 겹치지 않는다고 가정하고 만들어진 부분이 많을 거예요.

    반면, 글마다 srl을 하나씩 더 생성한다고 딱히 문제가 생기지는 않을 것 같습니다. 안 그래도 XE로 만들어진 게시판에 글을 쓰면 글 번호를 한두 개씩 건너뛰는 게 보통이고, srl은 64비트 정수라서 거의 무한정 생성할 수 있으니 나중에 모자랄 일도 없거든요.

    애드온으로도 구현할 수 있을 텐데요... Context 클래스를 사용하면 변수를 넘겨줄 수 있고, 변수를 넘겨주지 않더라도 화면에 출력할 HTML 컨텐츠를 직접 조작하는 애드온도 많거든요.
  • profile profile
    헐!!! Context::set을 완전 잊고 있었어요!!!!!!!!!! 감사합니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 화면 치환자는 성능 문제로 최대한 피하려 하는지라...