포럼


Xpressengine full page cache handler

간단하게 구현한 xpressengine 의 풀 페이지 캐쉬 프로그램입니다. 모듈이나 애드온 형태가 아닙니다. 몇달전에 xpressengine 설치해서 돌려보니 상당히 무겁다는것을 체감한후 속도 개선을 위해 간단하게 제작한 프로그램입니다. 테스트는 1.7.4에서 진행 했었고 공개하기전 1.7.5에서도 간단하게 해보았습니다. 작동을 위해서는 우선적으로 Memcached 설정이 활성화 되어져 있어야 합니다. 개발된 코드(xe-hook-fpc)와 일치하는 작동을 위해서는 cpage, page 등의 변수등에 대한 skin 설정도 정확하게 이루어져야 합니다. 조회수 업데이트 및 리스트 업데이트등의 동적인 페이지 구현에 있어서 몇가지 문제점들을 가지고 있는 프로그램입니다. 사용시에 유의하세요!

프로젝트 홈: https://github.com/vozlt/xe-hook-fpc

요구사항

  • Xpressengine(1.7.4+)
  • Memcached

Xpressengine memcached 설정

shell> vi [Installed xpressengine path]/files/config/db.config.php
'use_object_cache' => 'memcache://localhost:11211'

설치

shell> git clone git://github.com/vozlt/xe-hook-fpc.git
shell> cd xe-hook-fpc
shell> bash install.sh install [Installed xpressengine path]

삭제

shell> cd xe-hook-fpc
shell> bash install.sh uninstall [Installed xpressengine path]

적용 전후 함수들의 호출 수

ActionsDisableEnable
document7177518
list4862455

xhprof 를 사용해서 분석한 내용이며 페이지 로딩 속도 및 시스템의 부하 또한 비례 할 것입니다.(10배이상)

테스트 환경: 

centos6(x86_64), nginx, php-fpm-5.5, php-opcache-5.5, mysql-5.6, sphinx-2.1.4

기본 캐쉬 만료 시간

Actionsexpires(sec)
index300
list3600
document3600
comment3600
searched result3600
menu3600


캐쉬 만료시간은 [xpressengine 설치경로]/config/config.user.inc.php 에서 설정 가능하며 0으로 설정하면 해당 action은 캐쉬하지 않습니다.

define('__XE_HOOK_FPC_INDEX_EXPIRES__', 300); /* index's cache expires time(sec) */
define('__XE_HOOK_FPC_LIST_EXPIRES__', 3600); /* list's cache expires time(sec) */
define('__XE_HOOK_FPC_DOCUMENT_EXPIRES__', 3600); /* document's cache expires time(sec) */
define('__XE_HOOK_FPC_COMMENT_EXPIRES__', 3600); /* comment's cache expires time(sec) */
define('__XE_HOOK_FPC_SEARCH_EXPIRES__', 3600); /* searched result's cache expires time(sec) */
define('__XE_HOOK_FPC_MENU_EXPIRES__', 3600); /* menu's cache expires time(sec) */

캐쉬 만료 시간 설정 위치

shell> vi [Installed xpressengine path]/config/config.user.inc.php

캐쉬키 출력 하기

shell> vi layouts/[your layout path]/layout.html
<!--fpc:debug_info:s--><!--fpc:debug_info:e-->

레이아웃등에 위처럼 설정후 xe-hook-fpc 를 활성화 하고 정상적으로 캐쉬가 생성되면 아래처럼 html 에 출력 됩니다.

<!--debug_info{fpc:pc:ProcCacheDocument:board:1:0:login}-->

기타

xe-hook-fpc 구현시에 게시글(댓글포함)의 (추가|삭제|수정) 등의 변화시에 저장된 캐쉬를 삭제하는 처리는 해놓았지만 위에서 언급했듯이 cpage, page 등등의 변수가 해당 동작(추가|삭제|수정)시에 정확하게 전달되어야 합니다. 동적인 처리를 위해 내부로직에서 조회수등의 치환등의 몇개 정보는 구현해 놓았으나 너무 많은 경우의 수로 인하여 언급하지 않겠습니다. 그리고 솔직히 만든지 몇달 되기도 했고 xpressengine 내부적인 흐름도 모두 본것도 아니라서 제 환경에서는 대충 잘 동작하게는 했지만 다른분들은 어떨실지 모르겠습니다. 풀캐쉬로 인해 동적인 페이지 구현에 있어서 여러가지 단점은 존재하지만 잘 설정하시면 효과는 아마도 깜짝 놀라실 거에요:)

글쓴이 제목 최종 글
KANTSOFT 이번 블로터에서 오픈소스에 관한 멋진 기사를 썼네요. [1] 2014.07.02 by teguh100
zartin 신디케이션이 새로 나와도 안되겠네요. [3] 2014.07.02 by 오락실주인
socialskyo XE의 모바일 에디터 [1] 2014.07.02 by mAKEkr
geogeo123 왜 깡패 24 깡패 24 하는지 알거같네요 ㅋㅋ [18] 2014.07.02 by Luatic™
콜라가필요해 신디케이션 제대로 적용한 것 맞는지...? [3] file 2014.07.02 by boy2
pelican 모바일 XE 문제... [3] 2014.07.02 by 휘즈
졸라맨 네이버 신디케이션 웹문서 검색조건 바뀐거 다들 아세요? [4] 2014.07.02 by 달구뇽09772
SeungXE 현 시점에서 BNU = XEMagazine님의 알림센터 Pro를 구매할 방법은 없나요? [8] 2020.03.14 by XE러버
mAKEkr 다음에서 우편번호찾기 API를 곧 공개하나봅니다. [3] 2014.07.01 by 기진곰
WLIKR 요런걸 만들어봤는데 여러분은 어떠신가요? file  
심푸리 네이버에 올라온 공지 "네이버 신디케이션 개선" 그럼 여긴 구버전? [7] 2014.07.01 by 심푸리
슈니슈니 정리 좀 해주실분 [4] 2014.07.01 by 슈니슈니
qwms 신디케이션 효과가 큰가요? [7] 2014.06.30 by 밥로스
가르송 xe회원탈퇴시에 [4] 2014.06.30 by ひりゅう.
mAKEkr 워드프레스라고 호환성 문젠 없는줄 알았는데 호환성 문제떄문에 지금 워드프레스 버려야될판이네요. [2] 2014.06.30 by forest535
다크진 헉~ cURL 때문에 망했다 ㅜㅜ [10] 2014.06.30 by 슈니슈니
XE힘들당휴 네이버 신디케이션 정상 반영 되고 있습니다. [10] file 2014.06.30 by XE힘들당휴
졸라맨 사이트 레이아웃이 갑자기 깨지기 시작하는 현상에 대하여.(캐쉬재생성하면 괜찮음) [2] 2014.06.30 by 졸라맨
도라미 XE SEO 모듈은 중단된건가요? [2] 2020.03.14 by 도라미
SeungXE 7월 중순 배포예정 강력한 이미지 애드온을 소개합니다. (트래픽 0바이트, 강력한 이미지 에디터) [12] file 2014.06.29 by 2donggalbi