웹마스터 팁
jquery 외부로드하기
2014.04.07 01:09
외부로드의 이점
1. 호스팅 트래픽을 절감할 수 있습니다.
2. 요청이 서버에 줄어들어 사용자들이 더 빠르게 사용할 수 있습니다.
해당 방식을 이용함으로써 생기는 문제는, 1.5버젼대로 한정하여 보안에 취약해질 수 있습니다.
XE 1.5버젼
1. (xe설치경로)/classes/frontendfile/FrontEndFileHandler.class.php 를 연다.
열고나서 108번째 줄의 :// 를 임의지정하여 수정(if문을 삭제해도 된다.)
2. (xe설치경로)/classes/display/HTMLDisplayHandler.php 를 연다.
열고나서 function _loadJSCSS() 를 찾아 그 아래의 } else { 문에 jquery.min.js를 아래와 같이 수정한다.
$oContext->loadFile(array('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', 'head', '', -100000), false);
수정을 마쳤으면 저장하자.
XE 1.7버젼
1. (XE설치경로)/classes/display/HTMLDisplayHandler.php를 연다
2. 410번줄과 411번줄을 삭제, 다음과 같은 내용으로 대체한다
$oContext->loadFile(array('///ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', 'head', 'lt IE 9', -111000), true);
$oContext->loadFile(array('///ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js', 'head', 'gte IE 9', -110000), true);
$oContext->loadFile(array('///ajax.aspnetcdn.com/ajax/jquery.migrate/jquery-migrate-1.2.1.min.js', 'head', 'gte IE 9', -109000), true);
댓글 22
-
루팡쿠팡
2014.04.07 06:52
-
DynamicLaser
2014.04.07 11:19
XE코어에는 jQuery와 관련되어 2개가 들어가있습니다. 전체적인 기능을 하는 jQuery의 코어, 그리고 디자인을 담당하는 jQuery UI가 있습니다. 제 애드온은 jQuery UI만 밖에서 불러오는거구요, 이 팁까지 적용하시면 완벽하게 jQuery 코어까지 외부에서 불러올 수 있습니다.
1.5버젼대에서는 파일의 위치를 검사하여 검증하는 부분을 삭제하는것이기 때문에, 상대적으로 취약해질 수 밖에 없습니다.
-
socialskyo
2014.04.07 11:39
다이나믹 레이저님 !! 유용한 팁 너무 감사 드립니다.
-
루팡쿠팡
2014.04.07 17:44
1.7버전대는 괜찮나요? 여러번 질문해서 죄송합니다. ㅠ
-
DynamicLaser
2014.04.07 17:45
네 괜찮습니다~
-
루팡쿠팡
2014.04.07 19:32
383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458/**
* import basic .js files.
* @return void
*/
function
_loadJSCSS()
{
$oContext
= Context::getInstance();
$lang_type
= Context::getLangType();
// add common JS/CSS files
if
(__DEBUG__)
{
$oContext
->loadFile(
array
(
'./common/js/jquery.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/js/x.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/js/common.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/js/js_app.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/js/xml_handler.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/js/xml_js_filter.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/css/xe.css'
,
''
,
''
, -1000000), true);
}
else
{
$oContext
->loadFile(
array
(
'./common/js/jquery.min.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/js/x.min.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/js/xe.min.js'
,
'head'
,
''
, -100000), true);
$oContext
->loadFile(
array
(
'./common/css/xe.min.css'
,
''
,
''
, -1000000), true);
}
// for admin page, add admin css
if
(Context::get(
'module'
) ==
'admin'
||
strpos
(Context::get(
'act'
),
'Admin'
) > 0)
{
if
(__DEBUG__)
{
$oContext
->loadFile(
array
(
'./modules/admin/tpl/css/admin.css'
,
''
,
''
, 10), true);
$oContext
->loadFile(
array
(
"./modules/admin/tpl/css/admin_{$lang_type}.css"
,
''
,
''
, 10), true);
$oContext
->loadFile(
array
(
"./modules/admin/tpl/css/admin.iefix.css"
,
''
,
'ie'
, 10), true);
$oContext
->loadFile(
'./modules/admin/tpl/js/admin.js'
, true);
$oContext
->loadFile(
array
(
'./modules/admin/tpl/css/admin.bootstrap.css'
,
''
,
''
, 1), true);
$oContext
->loadFile(
array
(
'./modules/admin/tpl/js/jquery.tmpl.js'
,
''
,
''
, 1), true);
$oContext
->loadFile(
array
(
'./modules/admin/tpl/js/jquery.jstree.js'
,
''
,
''
, 1), true);
}
else
{
$oContext
->loadFile(
array
(
'./modules/admin/tpl/css/admin.min.css'
,
''
,
''
, 10), true);
$oContext
->loadFile(
array
(
"./modules/admin/tpl/css/admin_{$lang_type}.css"
,
''
,
''
, 10), true);
$oContext
->loadFile(
array
(
"./modules/admin/tpl/css/admin.iefix.min.css"
,
''
,
'ie'
, 10), true);
$oContext
->loadFile(
'./modules/admin/tpl/js/admin.min.js'
, true);
$oContext
->loadFile(
array
(
'./modules/admin/tpl/css/admin.bootstrap.min.css'
,
''
,
''
, 1), true);
$oContext
->loadFile(
array
(
'./modules/admin/tpl/js/jquery.tmpl.js'
,
''
,
''
, 1), true);
$oContext
->loadFile(
array
(
'./modules/admin/tpl/js/jquery.jstree.js'
,
''
,
''
, 1), true);
}
}
}
/**
* import basic .js files for mobile
*/
private
function
_loadMobileJSCSS()
{
$oContext
= Context::getInstance();
$lang_type
= Context::getLangType();
// add common JS/CSS files
if
(__DEBUG__)
{
$oContext
->loadFile(
array
(
'./common/css/mobile.css'
,
''
,
''
, -1000000), true);
}
else
{
$oContext
->loadFile(
array
(
'./common/css/mobile.min.css'
,
''
,
''
, -1000000), true);
}
}
}
/* End of file HTMLDisplayHandler.class.php */
/* Location: ./classes/display/HTMLDisplayHandler.class.php */
-
루팡쿠팡
2014.04.07 19:33
이렇게 되어있는데요..
@DynamicLaser 님! 저는 1.7대 버전인데요.. 410번줄과 411번줄이 없습니다..ㅠㅠ
-
DynamicLaser
2014.04.07 20:03
1.5버젼대 아니신가요? 파일목록이 1.5버젼대네요.
-
루팡쿠팡
2014.04.07 21:55
어라..Your version: 1.7.3.7 이라 되었습니다만...
파일목록은 1.5인가요..???
-
DynamicLaser
2014.04.07 22:02
아 제가 잘못알고 있었네요 T_T
1.7.3.7버젼보단 1.7.4버젼대로 업그레이드하셔서 이용하시는걸 추천드려요(jquery 버젼이 상당히 낮아요)
그래도 하시겠다면
지금 올려주신 소스의 405번째 줄의 내용을
$oContext->loadFile(array('///ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', 'head', , -110000), true);
로 바꿔주세요.
-
루팡쿠팡
2014.04.07 22:16
댓글 감사합니다^^
lt IE 9 랑 gte IE 9 이것 빼준것이 너무 궁금합니다 ㅎ
-
루팡쿠팡
2014.04.07 22:20
헛.. 백지상태되네요...ㅠㅠ
-
DynamicLaser
2014.04.07 22:23
백지로 되시면 원래대로 돌리세요 @_@.. 워낙 코어마다 방식이 들쑥날쑥해서..
-
루팡쿠팡
2014.04.07 22:24
ㅠㅠ..
이 방법 안해도 괜찮을려나용...?
-
DynamicLaser
2014.04.07 22:30
막 속도가 한번에 확 빨라지고 트래픽이 한번에 확 줄어드는건 아니니까요. 안하셔도 괜찮습니다~ ^^
그냥 요건 하시면 더 좋은거에요.
-
루팡쿠팡
2014.04.07 22:40
그렇군요.. 근데 이건 어떤 쓰임새인가요? 그냥 궁금해서용..
-
DynamicLaser
2014.04.07 22:45
lt IE 9, gte IE 9 말씀하시는건가요?
less than IE 9(IE9보다 낮으면), grater-than or equal IE 9(IE 9이거나 IE 9보다 높으면)의 줄임말입니다.
자세한 설명은.. http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx 이쪽을 참조하세요 ^^;
-
루팡쿠팡
2014.04.07 22:48
감사합니다^^
-
jQuery ui 외부로드 애드온 처럼 unload로 제이쿼리 외부로드가 불가능 한가요?
-
DynamicLaser
2014.04.07 20:48
네, Context 혹은 FrontEndFileHandler로 조절할 수 없는 범위내에 있는것같아요
-
댑펑
2015.02.17 17:55
현재 제이쿼리 관련하여 트래픽이 가장 많이 발생하는게 아래 두개의 파일 같습니다.
1. /common/js/plugins/ui/jquery-ui.min.js
2. /common/js/jquery.min.js 1에 관련해서는
http://www.xpressengine.com/index.php?mid=download&package_srl=22673736
위의 애드온을 사용하면 되나요?
2에 관련해서는 본문의 수정방법대로 하고 싶은데 410번과 411번이라는 번호가 맞지 않는 듯 합니다. 행번호 보다는 "어떠어떠한 내용을" "어떠어떠한 내용으로 바꿔라"고 알려주시면 더 알기 쉬울 듯 합니다.
참고로 저는 1.7.10 버전을 사용중입니다.
보안에 취약해질수잇나요???
...
올려주신 애드온 설치하고 이것도 수정해줘야 하는건가요?
아니면 서로 다른 별개의 방법인가요?