Q&A

코어에서 쏘아주는 CSS 및 JS의 주소를 일괄 치환하는 방법이 있을까요?

2021.06.22 12:21
290
0
CMS/프레임워크 Rhymix 1.9
개발 언어 PHP 8.0

전문가님께 의뢰드리는게 가장 빠르겠지만, 그래도 운영자로서 조금씩 연습하고 배워야 된다고 생각해서 항상 끙끙대면서 1차로 시도는 해봅니다... ㅎㅎ

 

이번에 별도의 캐시서버도 혼자 구축을 했고 잘 동작을 하고 있는데요

 

라이믹스 코어에서 제공해주는 CSS JS 합치기 기능을 통해서 모두 합쳐서 현재 운영중입니다.

 

그런데 이 CSS 및 JS주소를 xetown.com 이 아니라, cdn.xetown.com 에서 불러오도록 수정하는 방법이 있을까요?

 

제가 시도해본 방법으로는

common_layout.html 파일에서

 

<!-- CSS -->
<block loop="Context::getCssFile(true) => $key, $css_file">
<block cond="$css_file['targetie']"><!--[if {$css_file['targetie']}]><block cond="stripos($css_file['targetie'], 'gt') === 0"><!--></block></block>
<link rel="stylesheet" href="{$css_file['file']}" media="{$css_file['media']}"|cond="$css_file['media'] != 'all'" />
<block cond="$css_file['targetie']"><block cond="stripos($css_file['targetie'], 'gt') === 0"><!--</block><![endif]-->{"\n"}</block>
</block>

<!-- JS -->
<block loop="Context::getJsFile('head', true) => $key, $js_file">
<block cond="$js_file['targetie']"><!--[if {$js_file['targetie']}]><block cond="stripos($js_file['targetie'], 'gt') === 0"><!--></block></block>
<script src="{$js_file['file']}"></script>
<block cond="$js_file['targetie']"><block cond="stripos($js_file['targetie'], 'gt') === 0"><!--</block><![endif]-->{"\n"}</block>
</block>

여기에서 

 

<link rel="stylesheet" href="{$css_file['file']}" media="{$css_file['media']}"|cond="$css_file['media'] != 'all'" />

<link rel="stylesheet" href="https://cdn.xetown.com{$css_file['file']}" media="{$css_file['media']}"|cond="$css_file['media'] != 'all'" />

 

으로 바꾸고

 

<script src="{$js_file['file']}"></script>

<script src="https://cdn.xetown.com{$js_file['file']}"></script>

 

으로 바꾸었는데 

 

그렇게하면 작동은 하는데

 

브라우저 개발저 도구에서 확인해보니까 기존 xetown.com 에서 불러와지던 JS파일과, 그리고 cdn.xetown.com 에서 불러와지는 JS파일 이렇게 2개를 로드 하더라구요 ㅠㅠ

 

혹시 조언을 부탁드려도 되나 싶어서 글을 작성해봅니다...

댓글 6

  • 2021.06.22 12:30 #1584779
    display 이라는 트리거를 이용하여 해당 부분을 치완하면 됩니다.

    모듈에서 display트리거를 인수값을 가져오면 html 을 출력해주는데 거기에서 도메인을 가져와서 치환하시면 거기에서 알아서 외부 서버로 연결할 수 있습니다.

    애드온에서도

    $called_position 이 'before_display_content' 값인 채로 로딩시킨다음 해당 애드온에서도 치환이 가능합니다.
  • 2021.06.22 12:32 #1584782
    아 그러면 해당 애드온 코드에서, xetown.com 이라는 주소를 찾는 조건문을 만들어서 모두 cdn.xetown.com 으로 바꾸어두면 되겠군요

    이제는 regex 정규식 문제가 남긴했지만..그래도 감사합니다!
  • 2021.06.22 12:38 #1584790
    일반적으로는 도메인이 안붙을꺼예요.
  • 2021.06.22 12:42 #1584793
    넵넵 제가 확인해보아도 보통은 경로를 "./~~~" 로 지정해주면 그걸 브라우저단에서 도메인을 붙여서 호출을 하는것 같더라구요
    그래도 기본방향을 알려주셔서 개발시도에 큰 도움이 되었습니다
    감사합니다!!
  • 2021.06.22 12:57 #1584797
    하지 마세요.
    그렇게까지 트래픽을 줄여야 한다면 그냥 서버를 옮기는 게 답입니다.
    코어에 포함된 파일을 엉뚱한 곳에서 로딩하다가 애매한 문제가 생기면 정말 골치아픕니다.

    참고: https://github.com/rhymix/rhymix/pull/1053#issuecomment-410532987
  • 2021.06.22 13:01 #1584801
    아아 트래픽을 줄이기 보다는
    아무래도 그냥 텍스트 정보보다는 컴파일된 css 및 js파일이 크기가 커서, 한국에 위치한 캐시서버에서 우선 로딩되도록 할 생각이었습니다..!

    코어와 밀접한 부분이니 안하는게 더 낫겠네요
    답변 감사합니다!