XETOWN

호수 공원

XE 사용에 대한 여러가지 정보들을 공유할 수 있습니다.
조회 수 312 추천 수 7 댓글 12
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 

supercache.jpg

 

"로딩 속도가 안드로메다로 날아갑니다!"

 

 

변경내역 1.3.3

 

- Memcached 사용시 캐시를 비울 때 불필요한 에러 메시지가 표시되는 문제 수정

  (실제로 캐시를 비우는 데는 지장이 없었습니다. 잘 해놓고 에러를 뿜을 뿐...)

- XE 1.8.0에는 Mobile::isMobileEnabled() 함수가 존재하지 않아 치명적인 오류를 일으키는 문제 수정

  (여전히 XE 최신버전을 권장합니다.)

- 일부 위젯 캐시가 자동으로 갱신되지 않는 문제 수정

- 상자 위젯 사용시 디자인이 약간 달라지는 문제 수정

- 전체화면 캐시 사용시 로그인 실패 메시지 등이 다른 사용자에게도 표시되는 문제 수정

- 페이징 캐시 사용 기준을 최소 1건에서 0건으로 조정할 수 있도록 변경

 

변경내역 1.3.2

 

- 안전을 위해 대부분의 위젯은 캐싱하지 않는 것을 기본값으로 함

- 일부 모듈에서 위젯 캐시를 사용하지 않도록 설정할 수 있도록 함

 

변경내역 1.3.1

 

- 모바일 및 푸시앱 처리 개선

- 캐시 비우기 단추 추가

 

변경내역 1.3.0

 

- 모바일, 태블릿 및 푸시앱 처리 개선

- 서드파티 자료에서 연동할 수 있도록 트리거 제공

    - supercache.storeFullPageCache (before)

    - supercache.fetchFullPageCache (after)

- 새 글 등록시 해당 게시판을 참조하는 위젯이 자동으로 갱신되는 기능 추가
- 캐시 사용시 일부 모듈에서 commentItem 클래스가 존재하지 않는다고 오류를 뿜는 현상을 고침

  (슈퍼 캐시의 문제는 아니지만, 캐시 사용 환경에 적응하지 못하는 서드파티 자료가 많아서 ㅠ)

- SimpleXML이 설치되지 않은 환경에서 치명적인 오류 수정

- 모든 종류의 캐시에 스탬피드 방지 기능 기본 탑재

 

알려진 문제

 

안드로이드 푸시앱 모듈이 설치된 사이트에서 전체화면 캐시를 사용하면 모든 사용자의 알림 설정이 초기화된다는 제보가 있습니다. 원인을 알 수도 없고 특별한 대안도 없으니 이 문제가 해결될 때까지 푸시앱에서는 전체화면 캐시를 사용하지 않도록 설정해 주시기 바랍니다. (전체화면 캐시 설정 화면에서 PC, 모바일, 푸시앱, 로봇을 각각 따로 선택할 수 있습니다.)

 

캐시를 사용하는 환경에서 오작동하는 서드파티 모듈이나 애드온이 종종 발견되고 있습니다. 이것은 XE에 내장된 CacheHandler 기능을 잘못 사용하는 해당 자료의 버그이며, 슈퍼 캐시 모듈에서 고쳐줄 수 없습니다. 만약 이 문제 때문에 사이트 이용에 지장이 있다면 캐시 방식을 default로 변경하시기 바랍니다. default를 선택하면 슈퍼 캐시 이외의 모듈이나 애드온에서는 CacheHandler가 동작하지 않게 되므로 대부분의 버그를 차단할 수 있습니다.

 

깃허브에서 최신 버전 다운로드

 

글쓴이 기진곰

profile

GitHub 아이디는 @kijin입니다. 사람을 위한 인터넷 생태계의 발전과 웹 보안에 많은 관심을 가지고 있습니다.

오픈소스 도로명주소 검색서버 및 API Postcodify를 개발, 운영하고 있습니다.

우리가 만들어 가는 XE의 새 이름, 라이믹스(Rhymix) 프로젝트에 참여하고 있습니다.

국내외 서버 및 클라우드서버 셋팅, 이전, 튜닝해 드립니다.

이 콘텐츠가 마음에 드셨다면 커피 한잔 (후원)

닫기
작가에게 커피 한잔(후원)을 사주세요.
  • profile
    우성군 2016.12.14 21:11:04
    짱입니다. 아직 공홈 쉬운설치에는 안왔네용 ㅎㅎ
  • profile
    기진곰 2016.12.14 21:18:36
    공홈은 오늘 제가 다른 자료들도 왕창 업데이트하는 바람에 게시요청이 밀려서 시간 좀 걸릴 거예요 ㅋㅋ
  • profile
    우성군 2016.12.14 21:19:26
    아항 항상 감솨해요
  • ?
    마신 2016.12.15 00:34:37

    오~ 재생성시에 에러 메세지 없이 수정되었습니다로 나오네요.. 감사합니다.

  • profile
    고양이 2016.12.15 09:34:44
    패치 감사합니다! ㅎㅎ
  • ?
    DoubleCheck 2016.12.15 15:29:57
    수고하셨습니다~
  • profile
    단희아빠 2016.12.20 10:21:38
    기진곰님 안녕하세요. xe푸시앱 개발자 단희아빠입니다. 웹지기님을 통해서 설정 초기화 문제에 대해 들었는데, 해당문제의 원인을 제 생각에는 찾은 것 같은데, 혹시 몰라서 문의드립니다.
    푸시앱 동작 방식은 다음과 같습니다.

    우선 앱단에서 웹뷰접속과 동시에 httpurlconnection으로 서버에 post접속하면서 fcm reg_id값을 서버로 넘겨주게 됩니다(api -> procAndroidpushappRegIn, type=controller). 그러면 푸시앱 모듈 procAndroidpushappRegIn에서 해당 reg_id값으로 각종 접속처리를 하고 다시 앱단으로 여러가지 정보를 넘겨주게(response) 됩니다.
    문제는 어떤 사용자가 앱을 처음으로 설치하여 실행했을 때, post접속하면서 reg_id값을 넘겨주면 서버측에서는 최초 실행이므로 db에 설정 초기값을 넣게 됩니다.
    그런데 문제는 이러한 과정을 (여기서부터는 제생각입니다.) 슈퍼캐시가 캐시로 저장해서 다른 회원이 접속할 때도 똑같이 동작하는 것 같아요. 그래서 앱을 처음실행한 회원 이후로 푸시앱을 실행하는 모든 회원에게 같은 동작이 이루어져서 db에 설정 초기값이 일괄적으로 저장되는 것이죠.

    결론은 제가 아직 숙련되지 못한 개발자라서 잘못 코딩한 것 같은데,
    혹시 슈퍼캐시가 웹의 프론트앤드 동작 곧 페이지 디자인과 컨텐츠만 캐시하는 것인지, 아니면 백앤드 동작까지 캐시하는 것인지 궁금합니다. 왜냐하면 위에서 언급한 초기post접속은 페이지 표시와는 상관이 없는 백앤드 동작이라고 생각해서요. 제가 잘못생각한 것일 수도 있구요...
    그리고 괜찮으시다면 위의 동작과정에서 제가 주의해야 할 점이나, 슈퍼캐시와 푸시앱이 충돌되지 않게 하려면 어떤 점을 주의해야 하는지 알려주시면 문제해결에 도움이 될 것 같습니다.
  • profile
    기진곰 2016.12.20 12:07:32

    슈퍼캐시는 GET 요청만 캐싱합니다. GET이 아닌 요청은 건너뛰도록 되어 있으므로 DB에 설정값을 넣는 요청이 캐싱될 것 같지는 않습니다. 또한 위험하다고 경고가 붙어 있는 옵션을 일부러 선택하지 않으면 act값이 존재하는 요청도 모두 건너뜁니다. (주로 캐싱이 필요한 메인화면, 게시판 목록, 글읽기 화면 등은 act값이 없습니다.) 웹지기님이 이 위험한 옵션을 켜시지는 않았을 테니, act값이 있는 POST 요청으로 reg_id를 전달하는 백엔드 동작은 절대 캐싱되지 않는다고 보셔도 됩니다.

     

    따라서 다른 사용자의 정보가 잘못 전달된다면 웹뷰 최초 접속시 표시되는 HTML 메인화면 소스에 뭔가 캐싱되어서는 안 되는 내용이 들어 있기 때문일 것입니다. 혹시 메인화면 소스에 reg_id 값이나 그 밖의 설정이 박혀 있나요? 아니면 소스를 참조하지 않고 어플리케이션이 자체적으로 기억하고 있나요?

     

    한 가지 의문이 드는 점은 만약 엉뚱한 reg_id가 캐싱되어 전달되었다고 해도 왜 해당 reg_id를 가진 사용자뿐 아니라 다른 모든 사용자의 알림 설정이 초기화되었냐는 것입니다. 회원 계정과 reg_id가 연결되는 방식에 따라서는 이렇게 의도치 않은 동작을 할 수도 있겠지만, 저는 푸시앱의 작동 구조를 잘 모르니 단희아빠님이 좀더 살펴봐 주시면 좋겠습니다.

     

    처음 이 이슈를 들었을 때는 혹시 UPDATE (설정) WHERE regid = $regid 이런 종류의 쿼리에 $regid가 NULL로 들어가면서 WHERE절이 비어버려 모든 레코드가 일괄 업데이트된 게 아닐까 했는데, 관련 쿼리를 찾아보니 notnull로 되어 있더라구요. 그래서 이것도 아닌 것 같고...

  • profile
    웹지기 2016.12.20 12:20:43

    저희 사이트 경험적으로는 아래쪽에 언급하신 것이 가장 유력해 보입니다. 저는 기술적으로는 잘 모르지만 정확히 해당 regid 만 해당 설정으로 db에 밀어 넣어야 하는데 특정한 순간(아마 비회원의 화면이 캐싱된순간) db로 밀어 넣을때 regid를 특정하지 못하거나 하는 등의 이유로 모든 회원에게 같은 db를 밀어 넣는 현상이 벌어지는 듯 합니다.

    단희아빠님께서 기진곰님을 비공개 깃허브에 초대를 해주시는건 어떨까요?

    사실 이제라도 이부분 검토해 주시는 것에 다행이라고 생각합니다. 이런 문제의 클레임은 생각하시는 것보다 운영자에게는 큰 부담으로 작용되는 클레임이라서 원인을 제거하고 가는 것이 맞다고 봅니다.

    지금은 슈퍼캐시에서 푸시앱일경우  동작 자체를 원천적으로 막아주어 이런 현상이 없지만 어떤 사이트에서 이러한 내용을 모른채 옵션에 푸시앱 사용을 제한 하지 않는 경우도 있을 수 있구요.

    또 지금 가장 큰 문제는
    로직이 버전별로 너무 다양하다는 것도 검토하는데 어려움이 계실지도 모르겠습니다. 제가 저희 회원들 혹은 비회원들 단말기를 분석해 보니 여러 버전이 혼재해 있고 비로그인으로 이용하고 있는 단말기도 몇 몇 있었습니다. 이러한 단말기들 중 특정 버전에서 캐싱될 경우 문제가 발생한다던지 이런 난해한 상황일 수도 있다는 가설도 생각하게 하구요.

    사실 저처럼 운영자가 앱을 매일 사용하면서 댓글알림을 수신하고 있는 상태라면 이러한 푸시알림 설정 초기화가 되어도 인지하기 쉽지만 그렇지 않은 경우는 이런 상황에 있는데 회원들 제보가 없어 모르는 경우도 있을 거라는 추측도 해봤습니다. 왜냐면 이게 특정한 랜덤한 시점에서 발생하는 문제라 모든 사이트에서 100% 발생하거나 자주 발생하지는 않기 때문입니다.

  • profile
    단희아빠 2016.12.20 21:13:11
    다시 보니 푸시앱 모듈 트리거 triggerBeforeDisplay에 $_SESSION["reg_id"] 를 사용하면서 설정값을 가져오는 로직이 있고, javascript 의 param에 표시하는 로직이 있는데, 이것때문에 문제가 발생한 듯 보입니다.
    이 부분은 사실상 (상당히) 이전 사용자들 호환을 위한 부분으로서 지금은 사용되지 않는 부분인데,
    이 부분을 없애버리면 아마도 슈퍼캐시 모듈과의 충돌이 없지 않을까 생각해봅니다.
  • profile
    기진곰 2016.12.20 21:34:57

    그 부분도 의심이 되어서 전체화면 캐시 사용시 푸시앱의 display.before 트리거를 제거하도록 조치를 해두었습니다. 그러나 이 패치가 처음 들어갔을 때는 모바일 및 푸시앱 예외처리가 완벽하지 않던 시절이라 정확한 진단이 어려웠습니다. 해당 트리거만 제거하면 괜찮을지, 그리고 그 트리거가 아예 작동하지 않는 경우 또다른 문제가 생기지는 않을지 검토를 부탁드립니다.

  • ?
    eunjis27 2016.12.23 10:34:24
    수고하셨습니다.

List of Articles
번호 분류 제목 글쓴이 날짜
공지 질문/답변 답변을 확실히 받기위한 질문자 지침서 21 람보 2015.12.31
화제의 글 자료공유 시간표 위젯 1.1.2배포합니다. 15 file 착한악마 2017.01.10
4183 질문/답변 하다하다 여쭙니다. 통합로그인 8 드론엑스이 2017.01.14
4182 질문/답변 Got a packet bigger than 'max_allowed_packet' bytes 오류 1 Chronos 2017.01.14
4181 XE 사용팁 로그인한 회원 당사자에게만 게시글 추천,비추천,미추천 구분해주기 2 file 웹지기 2017.01.14
4180 질문/답변 모듈 관리자 페이지 (tpl) XE 관리자 페이지 디자인을 탈피 할 수 없을까요? 디자인 종속 받지 않기 2 구름이 2017.01.14
4179 질문/답변 가입후 일정기간 글작성제한 할수 있을까요 ...? 2 구미호 2017.01.14
4178 XE 사용팁 php7.0에서 포인트 팡팡 플러스 에드온 에러 수정 나만의너 2017.01.14
4177 질문/답변 php7.0에서 getpreventdefauilt의 사용을 권장하지 않습니다. 라는 에러는 어떻게 수정하나요 ? 3 나만의너 2017.01.14
4176 질문/답변 팝업창 띄우는 건대 1.8.29대에선 뭔가 잘안되네요 ! file 이성민 2017.01.13
4175 질문/답변 애드센스를달면 속도가 저하되나요? 2 낙타 2017.01.13
4174 질문/답변 게시판 스킨에서 스팸필터 등록하고 나서 새로고침하는 과정이 꼭 필요한 건가요? 기븐 2017.01.13
4173 질문/답변 XE 모바일도 호환되는 이미지 수정 컴포넌트가 있나요? 4 가시밭 2017.01.13
4172 질문/답변 혹시 채팅방을 열고닫기하는게 어떻게 하는지 자세히 아시는분있나요? 3 라그릿 2017.01.13
4171 질문/답변 DB 에서 태그 일괄 변경 2 가시밭 2017.01.13
4170 질문/답변 로그인한 회원이 해당 문서에 추천을 했는지 비추천을 했는지 알려주려고 합니다. 1 웹지기 2017.01.13
4169 질문/답변 활동을 잘안해서...상황파악좀 할려고.ㅎㅎ 4 똑띠 2017.01.13
4168 질문/답변 회원정보 보기 짧은 주소로 변경 및... 3 라뜨에 2017.01.13
4167 질문/답변 라이믹스는 TriggerModuleHandler 사용방법이 다른가요? 6 루딩 2017.01.13
4166 질문/답변 글쓴이(닉네임) 색을 바꾸고 싶어요. 3 현님v 2017.01.13
4165 질문/답변 모듈 제작시 타 모듈명으로 액션을 만들 수 있나요? + standalone 13 투정 2017.01.12
4164 질문/답변 사이트 로딩관련하여.,. 3 떡보의하루 2017.01.12
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 211 Next
/ 211
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...