테마 및 전역변수 감추기 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

테마 및 전역변수 감추기 정보

기타 테마 및 전역변수 감추기

본문

3067568377_1637785109.0981.png

 

직접 운영할 쇼핑몰을 개발중에 있습니다.

그누보드를 이용하여 개발되었다는 사실을 감추고싶었고,

 

따라서 가장 큰 특징인 전역변수를 숨기고 싶었습니다.

스크립트를 삭제한다면 변수 의존도가 높은 소스 특성상 모든걸 갈아엎어야 한다는 점을 알고있기때문에

PHP 를 이용하여 숨기기로 했습니다.

 

그래서 config, common 파일을 변태적으로 수정하여 theme 로 인식되는 PATH, URL 을

dist 로 강제로 변경처리 하였고 PACKER 를 이용하여 전역변수를 감추었습니다. 

 

결론적으로 head.sub 에서 CSS, JS 를 불러오는 부분의 URL 이

웹사이트 주소를 포함한 절대경로가 아닌 /dist 로 시작하는 상대경로로 표현됩니다.

 

 

이러한 시도는 아래의 이유가 컸습니다.

 

URL, URI... 이미 그누보드는 짧은 주소를 rewrite module 를 통해 사용하고

5.4 이상부터는 Hook 기능또한 강력하게 포함되어 있는데,

전역변수(G5_PATH)를 토대로 URI 를 생성하는 기능은 여전히 남아있기 때문에

사용된 js, css 가 절대경로로 표현된다는 점 입니다.

 

 

https://shipju.com/theme/title/mobile/shop/lorem/ipsum.php

/dist/mobile/shop/lorem/ipsum.php 가 위의 절대경로를 표현하는 상대경로 됩니다.

 

절반즈음으로 줄었다는게 육안으로도 확인됩니다.

이쯤되면 페이지 로딩 속도에 영향을 주게 될 수 밖에 없다 생각합니다.

 

1 char = 1 byte

 

이미 캐시가 된 페이지라면 속도차이가 없겠지만,

불러들이는 php, js, css 문서가 10개 20개씩이나 된다면 차이가 날 수밖에 없겠죠?

 

// 잠시 쉬고

 

테마 사용하지 않음으로 처리하지 않은 이유는

향후에도 동일한 소스를 재활용하기 위함 입니다.

테마라는 기능 자체는 활용도가 좋기 때문에

소스 커스텀 및 관리성의 편의성을 위해 이렇게 처리하였습니다.

 

서버는 일반적인 cafe24 의 웹호스팅을 사용하고 있고

SSL 의 경우 클라우드플레어 가변을 사용하고 있으며 개발 완료 시점에 엄격수준으로 올릴 예정입니다.

스크립트, CSS 를 불러오는 부분에서 전체 URL 이 표기되는 현상또한

config, common 의 수정으로 사이트 전체 URL 이 표기되지 않도록 처리하였습니다.

 

이러한 방식으로 작업한 이유에 대하여 궁금하신 분들도 계실거라 생각됩니다.

 

1. head script 가 너무 지저분할 정도로 많다는 점.

 

제로보드 이후 잠깐 워드프레스를 사용하고 그누보드에 정착한지 대략 10년.

이제는 전역 변수를 사용하는 방법이라던지,

head.sub 에 포함된 스크립트가 어떤 기능을 목적하는지 알고있기때문에

굳이 노출시키지 않고, 깔끔하게 소스를 정리해보아야겠다 싶었습니다.

당연히 소스를 정리하면 할수록 페이지 로딩 속도는 올라가고 있습니다.

 

2. 전역변수는 양날의 검.

 

오픈 소스 특성을 보이지 않게 하므로써 1차적으로 스크립트 해킹을 예방하고,

서비스 런칭시 그누보드(영카트)라는 점을 인식하지 못하게 하는점이 골자 입니다.

굳이 크리티컬하지 않은 포인트라는 점을 잘 알고 있지만

오픈소스를 사용하여 개발된 서비스와 자체적으로 개발된 소스를 비교하는 클라이언트 및

엔드유저 또한 신뢰성에 의문을 품는 경우가 은근 있다는 점 입니다.

 

3. 그누보드 업데이트를 대비하라.

 

/exdend/ 에서가 아닌 common 과 config 를 직접 수정하였지만,

전역변수에 관한 부분만을 수정하였고, plugin 과 같은 기타 변수는 일부분만 수정하였기때문에

그누보드의 보안 업데이트 또한 계속해서 이용할 수 있습니다.

 

4. 무분별한 Packing 으로 SEO 를 포기하지 말자.

 

Webpack 을 이용하여 head.sub 를 통째로 묶어버릴 수는 있겠지만,

SEO 를 이용하는데에 있어 불편한 점이 발생될 수도 있습니다.

그래선 안됩니다. SEO 는 소중하니까요.

하지만 Webpack 또한 시도해볼 예정입니다.

 

5. http://dean.edwards.name/packer/ 를 사용하지 않은 이유.

 

개발이 완료되지 않았음도 있지만, 향후에도 사용하지 않을 것 같습니다.

String 을 Encode, Decode 하는 방법이라 유지보수시에 큰 불편요소가 될거라 판단됩니다.

 

궁금하신점은 질문 남겨주시면 답변드리도록 하겠습니다^^

 

현재 cartupdate ajax 가 정상적으로 작동되지 않지만 크리티컬한 부분은 아니라고 생각됩니다.

주도면밀하게 세부 페이지들의 작동을 테스트 해보고 있습니다.

 

최종적으로는 head.sub 에서 불러오는 js, css 대부분을 하나의 파일에서 @import 하거나 php 로 묶어

보기에도 좋고, 유지 보수에도 좋은 형태로 작업될 예정입니다.

 

본 작업은 정상적인 theme 설정을 사용하여 개발을 마친 이후 "후 처리" 개념으로 접근해야 합니다.

테스트를 진행중인 지금까지는 아직 큰 이슈가 발견되지 않았습니다.

크리티컬한 이슈가 발견된다면 다른 방식으로 다시 처리하여 패치노트를 작성해보겠습니다.

냑님들 오늘도 화이팅입니다!

 

현재까지 사용된 외부 소스 :

- Packer (https://github.com/tholu/php-packer/blob/master/src/Packer.php)

- Minify (https://github.com/matthiasmullie/minify)

 

수정된 파일 :

- common.php

- config.php

- head.sub.php

 

도움받은 문서 : https://sir.kr/g5_plugin/6157

 

추천
4

댓글 1개

전체 1,262
개발자팁 내용 검색 기타에서

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT