참고 : - kMedia... : compressHTML - http://kmedia.cyworld.com

script 내에 있는 코드를 압축해서 적용하는 것은 IE 와 chrome 에서 적용시켰다.
하지만, FF 와 safari 에서는 적용이 안됐다.

글자를 압축시키고, 코드를 압축시켜서 표현하는 문제가 아니라,
함수를 지정하는 부분에서의 문제가 생기는 것.
... (아직 진행 안하고(?) 있음...) ...

일단, IE 와 chrome 에서 적용된 내용을 본다.
참고 : - compressHTML용 js version 9 (분배형) - http://club.cyworld.com/50832243118/123437219

1)


function Descript(vv) { var Dear=arguments, Dearl=Dear.length, Dei;
  for (Dei=0; Dei<Dearl; Dei++) execScript(decode(depress(Dear[Dei]))); }


중요한(?) 부분은 decode 로 풀리는 내용이 function 함수까지 지정처리가 되어서
script 태그로 쓴 것 같은 효과를 준다는 사실...

document.write 로 script 까지 압축해버리면 편하지 않을까...싶긴 했지만,
그렇게 하는 경우 실제로는 "글자로 적어주는 효과"이지 "함수로 지정"하는 효과가 아니라는 것...
(script 태그까지 압축하면 script 태그 내용 안쪽은 실행 안되는 것을 느꼈다.)

... 결국
document.write 는 "html 안쪽의 script 를 처리하게 하는 효과"는 아니라는 것이다.

...

2)

그런데(?)... 이런 압축을 할 때 문제되는...
"스크립트 내용물(?) 내에 오류가 있는 경우 실행해야 하는가?"라는 점....

원본을 충실히(?) 따르기 위해서는 실행하는 것이 맞다.

하지만... "스크립트 태그 내에 오류가 있는 경우 스크립트 자체가 멈춘다" 라는 법칙을 알고 있어야 한다.
결론은... 압축을 해도 <script></script> 태그 자체까지 압축하면 안된다...
(스크립트 태그가 두개인 경우, 한쪽이 멈춰도 다른쪽은 멈추지 않는다...)

뭐... 시간별로 차근차근(?)하는 방법도 있긴 하겠지만, (시도 안해봤음...)
( window.setTimeout() 과 document.getElementById() 를 사용해서...)

= =;... 그런 방법으로는 원본이 하려는 말(?)을 적용 못할 수도 있으니... (= =;... 압축하면서 원본 너무 따진다...)
(예를 들어, body 태그 안에 onload 가 있는 경우...)

... 그래서, 압축기...의 내용을 살펴보면...


var ... sstart='script', send='</'+sstart; sstart='<'+sstart, ...

...

    ni=vv.indexOf(sstart, i); if (ni<0) ni=vv.length;
...
    nie=vv.indexOf(send, ni+sstart.length);
    if (nie>=(ni+sstart.length)) {
      nic=vv.indexOf('>', ni+sstart.length)+1;
      cc=sstart+vv.substring(ni+sstart.length, nic)+'Descript("'+compress(encode(vv.substring(nic, nie)))+'");'+send+'>';

      if (cc.length<(llength+nic-ni+send.length+1)) {
        ov+=cc; cced=true; llensum+=llength+nic-ni+send.length+1-cc.length;
        } else ov+=vv.substring(ni, nie+send.length+1);
      i=nie+send.length+1;
      } else i=ni;


*참고*
script 를 소문자로 하는 것은 소스를 제작하는 개인취향탓이라...

나중에 개조하려 땐 대문자, 섞은문자...모두 가능하도록 하면 좋겠는데...
(앞글자 두자를 검색해서 위치재추적을 한다든지...)
캐릭터 하나씩 일일이 비교하면서 한다면 압축할 때 속도가 안나서 OTL...

물론, 프로그램으로 만든다면 속도가 훨씬 빨라지겠지만...
프로그램으로 하자니 유니코드...등과의 지원문제도 있고,
코드의 문제는 프로그램 내부 웹브라우져를 쓰면 되겠(?)지만, = =;...귀찮...

...

3)

어쨌든... IE에서는 성공을 했는데....

이런 방법이 NN 계열에서 적용되지 않을까...싶어서 eval (계산식 계산용 함수) 을 적용도 해봤다...
하지만 실패...했던 것 같다...

...

4)

나중에 함수부분만 따로 분리해서 [ x = "function () ..." ] 형식으로 적용시켜볼까...라는 생각도 해보긴 하지만...

= =;... 그런 방법으로 압축율이 제대로 적용될까...라는 의구심도 들고...
처리해야할 문법도 너무 복잡... (태그만 처리하는 것도 감당하기 힘든데...)

...

그 외에
문자화 되어있는 " 과 ' 구분자를 찾아내서(?) 부분압축하는 방안...도 고민만(?) 하고 있다...

...

현재는... IE 전용으로 급 마무리 지어버린 상태 OTL...

...

DoubleVictory killofki@.

Posted by killofki
,