file 캐시 사용상태에서

글 작성시 이미지 자동첨부 모듈과 모바일 작성글 표시 애드온이 비정상 작동 됩니다.

file 캐시를 사용하면 db상의 기록과 실제 게시물에 표시된 내용이 다릅니다. (이미지 자동첨부 모듈, 작성글 표시 애드온)

 

file 캐시를 사용하지않지 않음으로 바꾸면 기능 모두 정상 작동하구요.

 

단. file 캐시를 사용해도 댓글 작성 시에는 정상적으로 작동하구요. 글 작성시에만 해당 증상이 있습니다.

 

추가로 비정상적인 상태에서 캐시 재생성을 누르면 부분적으로 해결됩니다.

비정상적인 상태의 글에서 댓글을 쓰거나 글을 한번 수정 누른 후 확인 또 해결 됩니다.

 

그러나 이미지 자동첨부 모듈같은경우는 동일 이미지가 2번 첨부되는 사례가 생깁니다.

 

 

관련 글 1 - https://xetown.com/qna/604551

관련 글 2 - https://xetown.com/qna/606559

 

제 서버에서 막 설치한 라이믹스에서 증상 발견 되었고 다른 유저(이브이)님에게도 동일 증상 나타 났습니다.

 

자동이미지 업로드 기능도 중요한 기능이라서 놓칠 수 없고

캐시는 사이트 부하에 중요한 부분이라서 놓칠 수가 없네요.

 

증상 재현 되는분 계시면 댓글 부탁드립니다.

 

읽어주셔서 감사합니다 ㅎ

이것만 해결되면 XE로 앓던 고민이 모두 해결 되겠네요. ㅎ

 BeautyPlus_20160804023741_save.jpg

  • ?
    다시보니 외부 이미지 첨부애드온에서 글쓰기시 캐시갱신을 하지 않더군요.
    애드온을 수정하여 캐시를 갱신하도록 해도 되지만
    XE와 동일하게 라이믹스를 수정하는게 좋을 것 같습니다.

    정확하게는 라이믹스 코어에서 일찍 캐시를 생성하는 문제입니다.
    XE의 경우 procBoardInsertDocument가 끝날때까지 캐시를 생성하지 않는데
    라이믹스에서 addGrant()에 getDocument처리가 추가되면서 일찍 캐시를 생성합니다.
  • ? profile
    명쾌하네요.
    감사합니다. 우선은 캐시 미사용 해야겠네요 많은시간 할애해주셔서 너무 감사합니다
  • ? profile
    이미지 자동첨부 애드온에서 XE/라이믹스 코어의 updateDocument 함수를 사용하지 않고 자체 쿼리를 사용하는 것이 더 근본적인 원인으로 보입니다. 언제 어디에서 캐시를 사용했더라도 내용을 변경한 후에는 갱신되어야 하는데, 캐시 갱신 기능이 들어 있는 코어 함수를 사용하지 않으니까 갱신되지 않는 거죠...

    이 애드온 외에도 캐시 사용시 정상 작동하지 않는 서드파티 자료가 있다면 대부분 비슷한 이유일 것으로 추정됩니다. file 캐시뿐 아니라 모든 종류의 캐시가 마찬가지일 테고요. 라이믹스의 권한 관련 함수를 XE와 동일하게 수정하는 것은 안전하지 않습니다.
  • profile profile

    아래 댓글 참고해 주시고요, 이미지 자동첨부 애드온에서 캐시와 연동하는 부분이 있긴 한데 XE/라이믹스 최신 버전에서도 정상 작동하는지 확인해 봐야겠습니다.

    https://github.com/poesis/xe-autoattach/blob/master/autoattach.class.php#L98
    이 부분의 조건을 if(true)로 변경하여 항상 참이 되도록 해보세요.

  • profile profile
    혹시 그렇다면 수정이나 댓글작성시는 자체쿼리를 사용하지 않는건가요?
  • profile profile
    수정시에는 grant 처리가 미리 이루어지므로 애매한 시점에 캐시가 생성되지는 않을 것 같고요, 댓글은 원래 코어에서 캐시 처리를 하지 않습니다.
  • profile profile
    아아 감사합니다.^^ if(true)로 테스트 해볼게요
  • profile profile

    1234.jpg

    111111.jpg

     

    혹시 제가 이해를 잘못한것 일까요?

  • profile profile
    이상한데요... 문법상 틀린 게 없는데... 혹시 다른 데를 잘못 건드린 걸까요?
  • profile profile

    아뇨 다른곳은 손댄곳 없습니다. 라인 98이 이상하다고 나오고

    https://github.com/poesis/xe-autoattach/blob/master/autoattach.class.php#L98
    여기도 98번 라인이에요.

  • profile ?
    내용을 변경했으면 캐시를 갱신하도록 해야한다는 점은 동의합니다.
    다만 XE는 after_module_proc + procBoardInsertDocument시점에서 아직 캐시가 생성되지 않은 시점입니다.
    대부분 이미 만들어진 애드온은 아직없는 캐시를 갱신하는 기능을 넣지 않았을 것입니다.

    애드온 처리를 글쓰기 시점으로 사용 하는 것인데,
    updateDocument 함수를 사용하게 되면 트리거 처리가 추가되고
    불필요한 필터링 등 작업이 진행 된다고 생각합니다.

    저도 처음엔 그 분 서버문제로 생각했고, XE와 라이믹스 차이점을 발견하는데 시간이 걸렸습니다.
    라이믹스 https://github.com/rhymix/rhymix/commit/9143493f1309154f2d58398af07f96cc54ee93df
    변경 부분을 다른 방법으로 수정할 수 없다면
    라이믹스 애드온 개발시 캐시 갱신 및 updateDocument함수 사용을 가이드라인으로 제시해주시면 감사하겠습니다.
  • profile ?
    if (!$get_fresh_object)
    {
    $oCachedDocument->add('content', $content);
    $oCachedDocument->add('uploaded_count', $oDocument->uploaded_count + $count);
    }
    
    $oCacheHandler = CacheHandler::getInstance('object');
    if($oCacheHandler->isSupport())
    {
    $oCacheHandler->delete('document_item:' . getNumberingPath($document_srl) . $document_srl);
    }

     

    if문 밖으로 옮겨주세요.

  • ? profile

    여러모로 감사드립니다.

     

    ddd.jpg

    코드 까막눈이라서 혹시 가능하다면 autoattach.class.php 파일을 zip으로 압축해서 첨부해주실 수 있으신가요?

  • profile profile
    https://xe1.xpressengine.com/index.php?mid=download&package_id=22753797
    패치 감사합니다!!!