포럼


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 내부적인 흐름도 모두 본것도 아니라서 제 환경에서는 대충 잘 동작하게는 했지만 다른분들은 어떨실지 모르겠습니다. 풀캐쉬로 인해 동적인 페이지 구현에 있어서 여러가지 단점은 존재하지만 잘 설정하시면 효과는 아마도 깜짝 놀라실 거에요:)

글쓴이 제목 최종 글
XE 공지 정치와 관련 되거나 욕설 포함된 컨텐츠 작성에 주의 부탁드립니다.  
멘탈가루루루루몬 (건의)외부 이미지의 썸네일 생성방식 변경-prologos님 [3] 2014.07.07 by SeungXE
SeungXE XE Planner 게시판 스킨은 정말 강력한 것 같습니다. [8] file 2014.07.07 by SeungXE
SeungXE 알림센터 Lite를 쪽지/@호출시에만 알림음 재생하기 [6] 2014.07.06 by socialskyo
SeungXE 원작자의 허락이 필요한 소스코드 퍼가기 기능 구현 [12] file 2014.07.06 by KrteamENT
슈니슈니 웹문서 탭 [5] 2014.07.06 by 가브리엘조
Lansi XE 코딩 규칙은 아직 지켜지는 건가요? [10] 2014.07.06 by 정도길
oscarmike 애니즌님의 유트브 업로드 1.7.3.4 에서 작동하는분 계세요? [16] file 2014.07.05 by 애니즌
멘탈가루루루루몬 (중요)공홈 내 정보>작성 글 보기 에서 보면... [9] 2014.07.05 by 멘탈가루루루루몬
달구뇽09772 웹의 미래를 생각한다면 구글로 초점을 맞춰야. [8] 2014.07.05 by Double'U'
웃는기차 모바일로의 이전.. [2] file 2014.07.04 by 막쓰s
XE러버 예전에 나온 스핑크스 검색 모듈은 [3] 2014.07.04 by SeungXE
XE러버 레이어로 로그인 하는 레이아웃들의 로그인 SSL 미적용 문제 [14] 2014.07.04 by XE러버
vozlt XE 풀 페이지 캐쉬 프로그램(xe-hook-fpc) 공개합니다. [13] 2014.07.04 by Luatic™
졸라맨 네이버 바로가기 등록 기준 아는분 있나요? [23] 2014.07.03 by 잉카러부
졸라맨 네이버 검색결과 사이트보다 웹문서가 위에 뜨네요 [6] 2014.07.03 by teguh100
멘탈가루루루루몬 xe가 설명서만 잘 읽어 보려고 한다면 입문하기는 참 쉬운 cms군요.. [11] 2020.03.14 by Kenta
가나라라라a 네이버 신디케이션 웹문서 노출.. [1] 2014.07.03 by 몽실아빠
geogeo123 좀 다양한 xe 스킨 파는곳이나 배포하는곳 아시는분? [3] 2014.07.03 by 정도길
콜라와사이다그리고 뉴신디 적용 안 했다고 수집 된 글 초기화되였어요 [2] file 2014.07.03 by zombiman
XE러버 XE SSL 항상적용시에 [5] 2014.07.03 by sol