구형 브라우저 IE8 에서는 base64로 된 이미지가 정상적으로 표시 되지 않음

이놈의 IE8 은 제발 없어져야 (.. ) 할 브라우저이다.

웹개발시에 이미지가  base64 encode되어서 들어가는 경우도 사실상 존재하긴한다.

(물론.. 절대경로 형태로 특정 이미지를 load하는게 더 좋은 방법이다. )

금년도 진행했던 프로젝트에서 텍스트 에디터로 summernote 라는 오픈소스를 사용했는데. ( http://summernote.org/  ) 다른 텍스트 에디터에 비해 최신 브라우저 지원이 잘되어있으며, bower  와 같은 도구도 지원하고 ui도 필요한것만 있어서 아주 유용하게 사용했다. (라이센스도 MIT이고.)

다만 이미지 업로드를 붙히는 과정에서. 여력이 안되서. 초기버전에는 summernote에서 지원하는 base64 encode 방식으로 이미지 삽입 기능을 사용했는데.

해당 기능을 사용하면 아래와 같이 HTML에 삽입이 된다.

<img style=”width: 275px;” src=”data:image/jpeg;base64,/9j/…..M0gH//2Q==” data-filename=”3.jpg”>

물론 간단한 이미지를 올리고 표시하는 경우에는 별도의 이미지 업로드 서버가 없이 사용할 수 있어, 상당히 유용한데.

문제는 이 데이터가 증가하면 DB가 감당하기도 어렵고, 조회 할때 너무 많은 데이터를 불러와서 API형태의 웹페이지에서는 그렇게 좋은 방법 같지는 않다.

게다가 여기서 문제가 발생했다.

QA를 통해 IE8에서 해당 이미지가 안보인다고 이슈라이징이 되었는데..

문제는 내 개발 PC 는 IE10이고. 개발자도구로 IE8로 렌더링/브라우저 모드를 변경해도 해당 이슈는 재현되지 않았다.

그래서 여러방면으로 찾아본 결과 아래의 글을 찾기에 이른다.

http://stackoverflow.com/questions/10159500/internet-explorer-and-base64-image-display

즉 IE8 에서는 32KB이상의 base64 encode 이미지를 지원 하지 않는 다는 것이다.

base64이미지를 사용하려면 32KB보다 낮은 이미지를 사용해야 하는데 사실상 안전성을 위해 사용하지 않는 편이 더 좋은것 같다. (급할땐 어쩔수 없지만..)

이후에 해당 기능은 별도의 이미지 서버에 올려서 URL을 리턴받는 방식으로 개발 교체 되었고, 지금은 문제가 발생하지 않는다..(하지만 이미이전에 만들어놓은 데이터가 속을 썪이고.. 있다.. )

만약 base64 인코딩된 이미지로 HTML에 삽입해서 페이지를 개발했는데 IE8에서 이슈가 발생한다면 빨리 이미지업로드 서버구축후 ( 아니면 오픈된 다른것을 사용하던가. ) 해당기능은 교체해야 할 것이다.

 

 

1 댓글

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.

다음의 HTML 태그와 속성을 사용할 수 있습니다: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>