웹마스터 팁
XE 용량 효과적으로 줄이기
2010.07.30 17:05
안녕하세요
XE를 너무 잘쓰고 있습니다.
그런데 역시나 너무 무거운 체제라 보니, 로딩 속도가 너무나 문제임을 발견하게 됩니다.
XE 사이트만 하더라도, 일차적으로 다운로드 해야 하는 파일은 74개 파일에, 총 용량은 287.6kb를 요구하고 있습니다.
(파일수와 총 다운로드 용량은 각 페이지에 따라서 다릅니다.)
그래도 XE 사이트는 네이버에서 서버를 돌리는거라서 서버가 빠른 효과를 보고 있는듯 하고요, 저처럼 호스팅을 쓰는 입장에서는 방문자에게 한번에 74개 파일을 받게 강제 하는것은 무척 무리라고 봅니다.
다른 XE로 구현된 사이트들을 들어가 보면....
거진 MP3 파일에 버금가는 페이지들이 둥둥 떠 있더군요, 조금 XE를 이용해서 이쁘게 만든 사이트의 경우에는 1메가 2메가는 기본이고 페이지 하나를 구성하는 파일수도 100개를 넘는경우가 수두룩 한거 같습니다.
제가 발견한 XE의 로딩속도 문제는 아래와 같이 구분될거 같습니다.
- MySQL DB 쿼리 => 와일드 문자 *를 쓰고 있는데 이는 MySQL 서버에 엄청난 무리를 줍니다.
- MySQL DB 코넥터 => 오브젝트로 사용을 하고 있는데 몇몇 모듈이나, 애드온등을 보면 오브젝트 사용 후 제대로 디스트로이를 시켜주지 않고 있습니다 => 이는 서버에 메모리 누수(Memory Leaking)을 일으키는 것으로 판단 됩니다.
- PHP Code => 제가 PHP는 손놓은지 몇년이 되어서 잘 모르겠습니다.
- CSS => 엄청납니다. CSS파일 구조가 XE코어 + 각 모듈 + 각 레이아웃 + 각 애드온 + 각 위젯으로 나누어 져 있는걸 다시 하나로 통합해서 부르는데, 불필요한 CSS 셀렉터가 너무나 많습니다. 정리를 하려고 해도 통합적인 문서의 부제로 인해서 노가다로 하나씩 하나씩 테스트 하면서 줄여야 합니다.
- JS => CSS와 같은 원리로 구조를 갖는거 같습니다. 정말 이해 못할 부분은, XE는 기본으로 jQuery를 이용을 하는데 몇몇 위젯, 모듈,기타 등등은 jQuery가 아닌 다른 라이브러리를 참조하는것도 있고, 그래서 다른 라이브러리를 불러와야 하니 JS 파일하나만 보통 300kb~800kb(사이트 마다 달라요) 이렇게 천차만별이지만, 엄청나게 큰 용량을 차지 하고 있습니다.
해결책
MYSQL 쿼리를 옵티마이즈 합니다.
각 모듈이나, 위젯의 쿼리 XML 파일을 보면 보통 덤핑하듯이 아래와 같이 모든 칼럼값을 사용여부와 상관없이 가져오고 있습니다.
<columns>
<column name="*" />
</columns>
이를 다음과 같이 꼭 필요한 칼럼만 지정하여 줍니다.
<columns>
<column name="document_srl" />
<column name="title" />
</columns>
CSS 파일을 옵티마이즈 합니다.
- 먼저 쓸모없는 CSS 셀렉터를 찾아 냅니다. 하나씩 찾기는 힘들기 때문에 파이어폭스 애드온중 Dust-ME라는 애드온을 깔고서 불필요한 CSS 구문을 찾아서 지워주면 됩니다.
Dust-ME :http://www.sitepoint.com/dustmeselectors/ - 이미지의 경우에는 따로 따로 만들어 부르지 말고, 스프라이트 이미지를 이용하여 이미지 숫자를 줄입니다. 결과적으로 HTTP Request 횟수가 줄어들게 되고, 페이지 반응 속도를 올려줍니다.
아래는 현재 코스트렐리아에 적용된 CSS용 스프라이트 이미지 입니다. 아래 한계 이미지 파일의 크기는 7kb에 불과하며, 여러개의 이미지들을 하나로 묶어서 결과적으로 총 26회의 HTTP Request를 기전과 비교해서 줄였습니다.
- CSS 파일의 논리적인 옵티마이징이 되었으면, 이제 다시 텍스트 파일인 CSS를 압축(사실은 TAB,뉴라인,코멘트 제거)을 실시 합니다. 아래 사이트에 가서 복사, 붙이기 신공을 펼치면 됩니다.
http://www.csscompressor.com/
참고로 XE는 GZIP 압축을 하고 있는데 이는 정말 너무나 고마운 배려 입니다. 그러나 GZIP전에 조금씩이라도 줄여주면 더 좋겠죠...
JS 파일을 옵티마이즈 합니다.
- 만약 자바스크립트에 대해서 자신이 없다면, 각 함수를 찾아 고치기 보다는 각 JS 파일을 열어서 탭 그리고 뉴라인만 줄여도 전체 JS 파일로 따지면 엄청난 용량절감을 경험 할 수 있습니다.
- XE의 경우 jQuery- UI도 사용하고 있는데, 자세히 들여다 보면 사용치 않는 UI-콤퍼넌트들까지 장래 사용을 위해서인지 모두 불렀습니다. 그래서 jQuery- UI만 하더라도 엄청난 크기를 보이고 있습니다.
http://jqueryui.com/download 로 가셔서 꼭 필요한 컴포넌트만 찾아 새로 UI JS 파일을 다운받고 기존의 XE에 기본으로 내장된 파일과 바꿉니다. 코스트렐리아의 경우에는 UI - JS는 꼭 필요한 부분만 설정해서 40kb대로 줄였습니다. 기본은 300kb가 넘더군요. - http://javascriptcompressor.com/ 에서 JS 파일 압축을 합니다.
거진 대부분의 XE파일을 하나하나 손으로 일일이 줄였습니다.
어떤 파일은 몇 바이트만 줄였고, 어떤 파일은 몇십 킬로바이트를 줄였습니다.
그 결과, 총 수백 킬로 바이트의 파일 크기 절감을 가질 수 있었습니다.
또한, PHP의 경우, 나름 더 빠르다고 생각하는 로직으로 몇몇 PHP 함수를 바꿔 주었습니다. 따로 퍼포먼스 메져용 코드를 짜지 않아서 비교하기는 그렇지만, 어느정도 효과를 보고 있다고 느끼고 있습니다.
마지막으로 MYSQL의 경우는 쿼리를 조금씩 바꿔 효과를 보았는데, XE의 XML 쿼리문을 전체적으로 이해를 하지 못해서 MYSQL 내장 함수로 더 속도를 올릴 수 있는 부분이나, 조금 복잡한 쿼리문을 넣어 시험을 하지 못한 아쉬움이 남습니다.
http://www.kaustralia.com/KA/?mid=TECH&document_srl=2113489
*****
게으른 탓도 있어서, 자세히 문서를 안 읽어 봤는데, 통합 GZIP되는 JS나 CSS말고 따로 불려지는 파일들을 통합하는 방법을 알고 싶습니다. 그러면 좀더 효과를 얻을 거 같은데 말입니다....
- [2019/03/18] 포럼 XE 레이아웃 제작 일주일 코스
- [2019/01/18] 묻고답하기 모바일에서 서 레이아웃 비정상 문의드려요
- [2018/12/31] 묻고답하기 슬라이드 위젯 삽입 후 메뉴가 안보이네요 고수님들 부탁드립니다 *6
- [2018/11/21] Blog [XE3] XE Store 사업설명회 행사 안내 - 2018년 12월 5일 *2
- [2018/03/28] 묻고답하기 $oMail->setSender Sender 이메일 발신자가 공백으로 나옵니다. *3
댓글 13
-
달팽이355
2010.07.30 17:45
-
SMaker
2010.07.30 19:49
이런 것도 속도에 영향을 미치지만
근본적인 속도 향상을 위해서는 전체 구조를 뒤엎는게 쉽겠죠? -
SMaker
2010.07.30 20:11
slow query를 살펴보니 거의 카운터에서 발생하는 듯 합니다.
카운터를 사용하지 않는다면 slow query가 거의 발생하지 않을 듯 하네요.
-
老姜君
2010.07.31 00:09
대단하십니다. 언제 한번 날잡아서 하나씩 해보고 싶네요.
슬로우 쿼리는 카운터가 의외로 많이 유발시키고, 코멘트와 다큐먼트도 꽤 나오더군요.
-
미츠루
2010.07.31 11:40
아..;; 사실 이런 구조적인 문제는 공식적으로 채택되거나 (구조를 통째로 뒤엎게 된다는 뜻) 하기 전에는 개인적 차원에서 하는 수 밖에..;; ㄷㄷ
-
hellosamyoo
2010.07.31 15:46
동병상련입니다... 파일이 너무 많이... XE 솔직히 정신이 없어요... 다 뜯어 본다는 것도... 옛날에는 가능했지만...
지금은 너무 버거운 상황 (본인은 2000년도 부터...Zeroboard 1, 2, 3, 4까지 모두 경험...이번에 XE 도전합니다... 더 힘드네요~)
아~ 그리고 문의 드립니다.
1. 코아(Core)말고, 다운 어차피 받을... 모듈, 애드온, 위젯, 레이아웃, 기타등등... 한꺼번에 받아, 각각의 디렉토리로
다운되게 정리된 압출 파일은 없을까요? 몰라서 질문드립니다.
2. 또한 만약, Hosting업체에서 Safe_mode = Off가 보안정책이라면.. 어떻게 자동 FTP가 가능하게금 할 수 있는지?
그래서 1번을 질문 드렸던 것도 있습니다만... 하나하나 수작업 하자니, 세션을 열어놓고..수동으로... 번거로워 질문
올림니다
3. XE 매뉴얼이나 동영상 없나요? '선우강사님' 동영상 몇개 보았지만... 많이 부족하다고 생각해 질문드려요
4, 기타있지만... 차후에 좀 더 XE 본후에 질문 드리겠씁니다...
고수님들, 답변 꼭- 기다리겠씁니다.... (답변 해주시는 분이 많이 없으신 것도 같은데,...)
다시한번 부탁드립니다... (감사)
SMS 메시지도 환영 (010-3224-1154) - 다시한번 감사
-
HolyJohn
2010.08.01 04:45
저는 고수는 아니지만 현재 XE 메뉴얼 사이트 제작하고 있습니다 ^^
문의한 1번과 같이 한꺼번에 다운 받는 패키지를 이미 제가 제작했습니다...
http://www.XEmanual.com/package
매뉴얼은
http://www.XEmanual.com/
-
HelloSam
2010.08.03 11:52
예, HolyJohn님... 오늘 보았습니다
다운받아 압축푸니... 잘 정리되어 있습니다
다시한번 감사를 드립니다
본인은 XE내 FTP 접속 고민하다가... 호스팅업체에 요구해 (Safe_mode=On)
결국... 어젠가요... 쉬운 설치로 설치를 완료후 이제 시작할 려고 합니다
Zero 1, 2, 3, 4을 경험했지만... 오히려 더 어렵다는 생각을 하게 되네요? 왜죠?
매뉴얼도 다운 받아.. 보도록 하겠씁니다. (다시한번, 감사)
또한 1개월하면서... 모르는 것이 있다면 HolyJohn님에게 질문을 남기도록 하죠.
더운데 답변과 충분한 자료까지 링크주셔셔 심심한 감사를 드립니다.
본인 Twitter/Facebook/FourSquare ID: @hellosamyoo 입니다. 국내/세계 랭킹에 드는 파워유저며
8월 10일경쯤 국내 최초로 출판될 페이스북 저자입니다
만나서 반갑습니다... 건강하세요~
-
HolyJohn
2010.08.03 14:45
전 Zeroboard 4 사용하다가 XE 사용하니 저도 처음에 참 어려웠습니다.
사실은 저도 초보인데 배우다가 어려워서 답답해서 저의 초보수준에 맞게 www.xemanual.com 을 제작하게 되었습니다.
모르는 것을 대답할 수 있는 수준이 될련지나 모르겠네요 ^^;;;
XE 사이트 제작 잘 되시길 바랍니다!
-
구가
2010.08.15 15:30
일단 저렇게 한다고해도 업데이트를 하면 대략 난감해질 것 같네요
그리고 줄이다가 코드라도 하나 잘못 건드리는 날에는 ... 적잖이 벅찬 팁 같습니다
-
푸하라
2010.08.26 01:46
분명하게 매력은 있으나 엄청나게 무거운 솔루션이라 감당하기 힘든것은 ㅠㅠ ;;;서버 사양및 통신속도만 따라준다면 현재의 xe도 나름 쓸만하다고 생각이 드네요.....다시한번 생각을 하지만 ..... xe는 넘 무거운 솔루션임에는 틀림없네요..... -
비밀얌
2010.09.02 03:46
웹호스팅에 의존하는 저로써는 정말 사이트에 접속이 안될때마다 심장이 벌렁 거립니다. 하루 접속자 1000 미만이지만 Too many connections 이런 것도 가끔 나오고 MYSQL 안들어가질때도 있고 사이트 속도도 그렇게 좋지가 않아서 애드온 다 끄고 캐쉬파일 설정도 다 해두며 쓰고 있습니다. XE가 웹호스팅으로 사이트 돌리시는 분들을 최대한 배려하여 속도, MYSQL 무리가 안가게하는 등으로 웹호스팅으로 돌리는 분들에게 알맞는 CMS으로 거듭났으면 좋겠습니다. -
똑디
2011.02.07 13:05
게시판 쿼리부분만 손을 봤는데..속도차이가 나는군요.^^ 좋은팀 감사합니다.
제목 | 글쓴이 | 날짜 |
---|---|---|
우분투 10.04 LTS, 방화벽 쉽게 설정하기 | fsfsdas | 2011.02.20 |
grep로 하위 폴더내 파일까지 내용 검색하기 | fsfsdas | 2011.02.20 |
우분투 10.04 LTS, vsftpd 설치/설정 | fsfsdas | 2011.02.20 |
내서버에서 ssh에서 root 권한 얻기 | fsfsdas | 2011.02.20 |
페이지에서 첨부파일 100% 에서 증발이 되면...? [6] | 우리아기 | 2010.09.04 |
PHP의 끝을 닫지 않아도 실행됩니다. [2] | SMaker | 2011.01.29 |
cafe 설정 / 배너이미지 사이즈 바꾸기 | 윤씨 | 2011.02.18 |
접속통계(statistics) 모듈 설치 에러 방지법.. | sejin7940 | 2011.02.15 |
동일서버내 페이지에서 로그인정보 활용하기... [4] | 수로 | 2008.09.06 |
XE공식레이아웃(xe_official_v2)에서 소셜XE로그인창 연동 | ehdgkr97 | 2011.02.13 |
방명록(Guestbook)에 소셜댓글을 다는 방법(소셜 방명록?) | 띵야 | 2011.02.13 |
cafeXE 회원목록 보기시 에러생기는 현상 [2] | sejin7940 | 2011.02.12 |
외부로그인을 어떻게 생성 하나요? [3] | 엄경선 | 2011.02.08 |
관리자가 회원목록에서 한번에 보이는 회원수 늘리고플때 | sejin7940 | 2011.02.10 |
"서버에 요청중입니다" 메세지(혹은 다른 메세지, DB접속실패 등) 바꾸기 | Cloverworld | 2011.02.08 |
[왕초보팁] 2차 메뉴를 레이아웃 스킨에 넣을 때 [2] | HolyJohn | 2011.01.21 |
게시판 관리자 표시하기... [6] | 카르마 | 2011.02.05 |
XE 용량 효과적으로 줄이기 [13] | 코스트렐리아 | 2010.07.30 |
랜덤 이미지 롤링위젯스킨에서 컬러셋이 적용되지 않는분은 필독! | xemall | 2011.02.02 |
사이트 모니터링 알리미에요...^^ [3] | web | 2010.12.10 |
허허,,이거슨 개발자들에게나 어울리는 팁..!! 초보자에게는 너무 어려워요~~죄송,,,^^