Extra Form
PHP PHP 7.0
CMS XpressEngine

위 링크의 애드온으로 페이지구분 변수 등이 포함된 주소의 경우 원주소인 게시글주소로 리디렉트가 되도록 사용하고 있습니다.

 

그런데 XE타운과 다른 특이점이 발견되어 문의를 드립니다.

 

XE타운은 저희 사이트와 다르게 처음 긴주소로 접속하는 과정이 없습니다. 이게 어찌 가능한지 궁금합니다.

2페이지 이상부터 목록에서 클릭하면 무조건 페이지변수가 포함된 긴주소로 접속을 시도해야 함에 불구하고 곧바로 짧은 주소로 접속합니다.

 

저희와 비교하여 꽤 많은 시간이 절약되고 있습니다.

 

라이믹스에서 주소체계를 아예 바꿔서 애드온에서 처리를 하지 않는건가요 ?

  • profile

    XE타운과 저희와 차이점을 보니
    목록을 만들때 목록의 게시글마다 주소를 XE타운에서는 이미 짧은 주소로 만들어서 제공을 하네요.

    리디렉트 자체를 없애고 미리 주소를 짧은주소 링크로 제공을 하고 있습니다.
    이게 애드온에서는 제공하지 않는 목록 자체를 가공해서 만들어낼때 작업이 되어야 가능할텐데 XE타운은 어떻게 이런 결과가 나오는지 알려지지가 않아 신기합니다.

     

    게시판 스킨에서 링크부분을 원주소만으로 수정한 것일까요?

    - 만약 이것이라면 다른 기능이나 슈퍼캐시등의 게시판캐시 등에 영향을 주지 않는 건지 궁금합니다.

    - 큰 손해가 없다면 수정해서 제공하는게 더 좋을 것 같습니다. 리디렉트 시간 자체가 없으니...

  • profile

    라이믹스에 포함된 기능은 아니고, 제가 만든 애드온에서 제공하는 기능도 아닙니다. 그냥 게시판 스킨에서 모든 글의 링크를 짧은주소로만 생성하는 것 같네요. 스킨을 수정한다면 얼마든지 가능하지요.

  • profile profile
    그래서 지금 스킨을 뜯어보고 있는데 잘 안되네요...
    링크부분이 많긴 한데..
    href="{getUrl('document_srl',$document->document_srl,'listStyle',$listStyle,'cpage','')}"

    위 부분중

    href="{getUrl('document_srl',$document->document_srl)}"

    이렇게 다 날려도 page 까지 포함된 긴주소 형태로 나오네요. 제가 다른 곳을 삽질하고 있는건지....
  • profile profile
    {$document->getPermanentUrl()}
  • profile profile
    감사합니다. 실제로 출력해보니 긴주소로 계속 나와서 위치 문제가 아니었네요.

    혹시 슈퍼캐시의 게시판캐시 등에 방해를 하지는 않겠죠? 혹은 다른 부작용이라도....
  • profile profile

    네, 스킨만 수정하신다면 캐시 관련 부작용은 없습니다.

    다만 page 변수가 넘어가지 않으면 코어에서 페이지수를 따로 계산하여 하단목록을 뿌려줘야 하기 때문에 DB 부하가 조금 높아질 수 있는데요... (애드온으로 리다이렉트하면 page 변수를 기억하고 있어서 괜찮습니다) 사실 리다이렉트도 불필요한 부하를 일으키는 것은 마찬가지이니, 어느 쪽이 더 많은 부하를 일으키는지는 좀더 지켜봐야 알겠지요.

    아, 그리고 검색이 들어가는 목록에서는 짧은주소만 쓰시면 안됩니다. 검색어가 실종되어서 하단목록이 틀리게 나올 거예요. page만 있을 때는 짧은주소를 스킨에 박아버려도 괜찮지만, search_keyword가 있는 경우에는 예전 방식으로 애드온 리다이렉트에 의존하는 것이 좋겠습니다.

  • profile profile

    아... 조금 고려해야 할 부분이 많네요. 일단 원래대로 쓰면서 짧은주소로 리디렉트 계속할지 아닌면 다시 긴주소로 제공할지 고민해 봐야겠습니다.
    타임라인에서도 목록을 재설정하는 부분이 있어 원게시판으로 이동기능이 오동작하게 되는 현상이 발생하네요.

    최근 모니터링 해보니 애드센스에서 다시 정신차린 듯 해서요.

     

  • profile profile

    개발자가 아니니 그냥 상상속의 나래를 펼친다고 생각해주세요.

    지금 애드온에 의해서 리디렉트 될때는 애드온에 의해 페이지 변수를 기억하고 있어 추가적으로 페이지 관련 코어에서 부하가 발생하지 않는 다는 것을 ...

    애드온에서 목록 화면에 개입을 하면 어떨까 하는 생각을 했습니다.
    목록에서 링크 주소를 짧은 주소로 치환을 해줍니다. 그리고 클릭시 마찬가지로 페이지 관련 부분이 문제가 없도록 변수를 처리해 주어서 코어에서 추가로 일을 하지 않게 해주는 것이죠.

    그리고 말씀 하신 짧은 주소로 치환하면 안되는 케이스에서는 그냥 내버려 두는 정도로요..

    이게 가능하다면 페이지변수가 없어지므로서 추가로 페이지 관련 부하가 발생되지 않으면서 매 게시글 마다 리디렉트 시간(약 50ms 이내로 보입니다. SSD를 사용하는 경우는 좀더 많이 빠릅니다.)이 없어져서 조금 성능 향상이 있을 것 같습니다.

    노력의 투자 대비 얻는 효과가 효율성이 있는건지는 개발의 난이도를 모르니 아이디어 정도로 봐주세요.

  • profile profile
    그렇게 할 수도 있겠지요. 그러나 목록에 있는 모든 글의 정보를 애드온에서 다 기억하고 있어야 하기 때문에, 지금처럼 클릭한 글의 정보만 기억하는 것에 비해 $_SESSION의 용량이 아주 많이 늘어날 위험이 있습니다.

    여러 탭에서 약간의 시간차를 두고 서로 검색 조건이 다른 글들을 읽다 보면 서로 겹치는 글번호들 때문에 엉뚱한 하단 목록이 튀어나올 수도 있습니다. 특히 타임라인 게시판 처리가 무척 난감할 것 같네요. ㅎㅎ

    말씀하신 방식으로 구현하는 것을 생각해 보지 않은 것은 아닙니다만, 이런 문제들이 예상되어 무기한 보류중입니다. 페이지 번호만이라면 어느 정도 승산이 있겠지만 검색이 들어가면 그야말로 노답이예요.
  • profile profile

    검색어 들어가면 그냥 스킵해야죠. 그런데 저는 기술을 모르다보니 본문 아래에 목록의 링크들을 replace하는게 쉽지 않아 보여 걱정이 들더군요.

     

    타임라인 게시판도 스킵하는게...

     

    그런데 쉽지 않아보여 정말 상상에 불과합니다 ㅋ

  • profile profile

    거기까지 가면 그냥 스킨을 수정하는 편이 더 쉽지요.

    <a href="<!--@if($search_keyword)--> {getUrl(...기존주소생성방식...)} <!--@else--> {$document->getPermanentUrl()} <!--@endif-->">

  • profile profile

    네. 스킨에서 시도해 보려고 구상중 이었습니다. 감사합니다.

    단, 페이지 부분 때문에 그냥 두려구요.. 어떤게 성능에 이로운지 테스트가 안되서요..

     

    만약, 성능상 페이지변수 없이 읽히는게 게시글 목록이 많은 곳에서도 유리하다면 그때 한번 시도해 보겠습니다.

  • profile profile
    일단 무작정 변경해 보았습니다.
    <a href="<!--@if($search_target || $timeline_info)-->{getUrl('document_srl',$document->document_srl,'listStyle',$listStyle,'cpage','')}<!--@else-->{$document->getPermanentUrl()}<!--@endif-->">

    저희는 키워드 없이 검색하는 케이스가 있어서 조금 바꿔 봤습니다.
    일단 바꿔보고 모니터링해 보겠습니다.
  • profile

    일단 광고 타케팅 부분이 영향을 받는 것으로 보여 주소를 변하지 않게 원주소를 계속 사용해야 할 것 같네요.

    지금 긴주소도 광고가 잘 나오지만 2페이지로 이동되어서 긴주소 형태로 바뀌고 3페이지로 이동하면 또 다른 주소로 바뀌고 하면 타게팅 되었던 광고가 사라질 가능성이 많아 보이네요.

     

    그리고 위에서 언급해주신 직접 짧은 주소로 접근하면 코어에서 페이지관련 부분 동작에 부하가 발생하니 어차피 득과 실이 모두 발생하는 상황이니 그냥 리디렉트 정도의 시간은 필수적으로 필요하다고 생각해 볼 필요도 있구요.