originnote
파일 삭제시(이미지) 업로드때 생성된 썸네일과 폴더가 파일이 삭제되거나 업로드가 끝난 후에도 삭제되지 않고 files/attach 디렉토리에 그대로 남아있습니다. 개인 블로그나 텍스트 위주의 사이트라면 큰 문제가 없겠지만 이미지 업로드가 잦은 커뮤니티, 포럼이라면 문제가 있다고 봅니다.
#61 · closed · 10 comments
파일 삭제시(이미지) 업로드때 생성된 썸네일과 폴더가 파일이 삭제되거나 업로드가 끝난 후에도 삭제되지 않고 files/attach 디렉토리에 그대로 남아있습니다. 개인 블로그나 텍스트 위주의 사이트라면 큰 문제가 없겠지만 이미지 업로드가 잦은 커뮤니티, 포럼이라면 문제가 있다고 봅니다.
섬네일 저장 장소를 files/attach/images가 아닌 file/cache/thumbnails로 변경하게 되면 게시글과 댓글삭제시 섬네일을 삭제합니다. 이 규칙은 XE가 가지고 있는 기본 섬네일 규칙과 동일한 설정입니다. 다만, XE는 게시글하나당 섬네일 하나라는 점에서 @originnote 님이 우려하시는 잦은 이미지 생성으로인한 용량문제는 크게 없는 경우입니다. 멤버분들에게... 해당 내용이 문제된다고 여겨지면 누리CMS에서는 파일 파기시 섬네일도 파기하도록 하거나 섬네일을 만들지 않고 대용량을 그대로 불러오는 방식으로 되돌릴려고 합니다. 의견 주시고 괜찮은 내용으로 처리하고자 합니다.
개인적으로는 굳이 따로 resize본을 생성하지 않고 @largeden 님이 제안하신 것처럼 원본 파일을 그대로 불러오는 것이 좋은 것 같습니다.
@originnote 참고로 말씀드리면, 섬네일 생성을 안하실려면 아래의 코드를 주석처리하거나 삭제하시면 됩니다. xpresseditor_axisj/js/AXUpload5forNuri.js p532, p660 width : 70 <- 제거 그리고, 섬네일을 생성하는 이유는 트래픽 절감때문입니다. 1MB가 넘어가는 이미지를 그대로 화면에 뿌리면 그게 곧 트래픽으로 발생되게 됩니다. 이것은 해외접속 등 거리가 먼 경우 더욱 확연히 차이가 납니다. 파일을 올리고 화면에 보여지는데에 걸리는 시간을 줄이고 트래픽을 절감하도록 구현한 기능입니다.
@largeden htaccess 등의 설정으로 한번 로드된 이미지를 캐시에서 읽어오도록 한다면 오히려 리사이즈본과 원본이미지를 총 두 차례 불러오는 현 방식보다 트래픽이 절감되지 않을까 생각합니다. 파일 파기시 섬네일도 파기하는 방식이 가장 이상적이겠지만 원본 파일에 width속성만 줄여 불러오는 것이 코드 수정은 물론이고 실제 처리과정으로 봐도 더 간단할 것 같았습니다. 섬네일 생성을 하지 않게 되면 자동으로 원본 이미지를 불러오는건가요?
@originnote width를 지정하지 않으면 섬네일 수행을 하지 않고 원본 정보 그대로 불러옵니다. 현 방식은 리스트업, 업로드 결과 API요청시 width 값이 있으면 출력URL을 섬네일 URL로 불러오며, 값이 없으면 원본URL을 불러오게 되어있습니다. 리사이즈와 원본이미지를 두차례 불러오는 방식이 아닙니다. 본 기능은 처음 업로드 된 파일을 리스트업시킬때에 의의를 두고 트래픽을 절감하는게 목적입니다. 또한 htaccess 캐시이용은 사용자가 수정해야하는 경우이기 때문에 초보자들이 할수없는 영역같고요.(htaccess를 못쓰는 환경이라면?) 때문에 해당 업로더 섬네일 기능은 최소한으로 성능의 효율을 보고자 고민된 기능입니다.
@largeden 즉 width를 지정하지 않게 되면 섬네일을 생성하지 않고 원본 이미지를 크기만 줄여서 불러온다는 뜻인가요? 그런데 원본이미지의 width값을 줄여서 가져오려면 그에 따른 설정이 필요할텐데요. 만약 그렇게만 된다면 별도의 패치 없이 저처럼 섬네일 파일을 따로 생성하지 않는 것을 원하는 유저를 위해 수정 팁만 공개하면 될 듯 합니다. 제가 트래픽 절감 이야기를 한 이유는 어차피 이미지파일의 경우 본문삽입을 하게 되며 원본이미지를 불러오게 되어있기 때문입니다. 이때 섬네일을 리스트업시키게 되면 섬네일파일과 원본 이미지, 즉 두 개의 이미지를 로드하게 됩니다. 하지만 htaccess에서 캐시설정을 한다는 전제하에 원본이미지를 불러오게 된다면 한 개의 이미지만 불러와도 된다는 것이죠.
위에 적어 놓은게 팁입니다. width을 줄여서 가져온다는 말뜻을 잘 모르겠습니다. 리스트 출력 item에는 .AXUploadPreview로 사이즈를 contain 처리하고 있습니다. 해당 코드를 한번 살펴주셨으면 고맙겠네요. 다시한번 설명하는데 섬네일의 효과는 1MB이상의 파일을 해외에서 가져올때 확연히 차이 납니다. 10개를 동시에 올리고 리스트업시킬때 현재 부드럽게 표현되는게 1MB이상의 사이즈를 그냥 가져오면 위에서부터 아래로 슬로우로 줄긋듯이 표시되어 부드러움을 잃어버리고 느려지는 체감을 가지게 됩니다. 또한 모바일도 고려할때 불필요한 낭비는 줄여야하는게 맞는겁니다. 첨부파일을 본문삽입시 노출과정의 트래픽은 업로더의 문제가 아닙니다, 그 부분은 구분해서 고려해야합니다. 본문삽입행위는 사용자의 선택입니다. ps 결국 @originnote 님이 필요로하셨던게 섬네일을 저장하지 않고 사용하는 방법을 알고자하신 경우인건데 팁만 알고 가시면 될것을 이렇게 많은 글로 시간이 소비 되었군요. :) 하지만 섬네일이 삭제되지 않는건 버그가 맞으니 어떻게 처리할지 다른 멤버와 고민해보겠습니다.
@largeden 빠른 시일내에 패치가 되었으면 좋겠습니다ㅎ 그때까지는 원본이미지를 가져오는 팁을 적용해서 써야겠군요. PS. 혹시 AXISJ가 법인으로 운영중인 사업체인가요?
@originnote 잘은 모르지만 법인이면서 자체솔루션으로 개발을 쉽게 진행하고, 또한 그 솔루션을 LGPL 2.1로 만들어서 자유로운 사용과 자유로운 개발참여로 발전 시키는걸로 압니다.
@largeden 우리나라 개발자들이 만든 라이브러리라는데에 진짜 놀랐습니다. 기대도 많이 되는군요. 에디터나 이런 업로더처럼 XE와 연계할 수 있는 부분도 있는 것 같네요. 윈컴이님의 부트스트랩 레이아웃같은 AXISJ를 이용한 레이아웃이나 모듈스킨이 기대되는군요ㅎ 많이 참고해야겠습니다.