몇 가지 행운의 개발자 와이 저자는 Tech Edit Osmani의 새로운 이미지 최적화 전자 책을 편집 할 수있는 기회를 가졌습니다. 필수 이미지 최적화 절대적으로 읽어야 하는가?
풀 사이즈를 구축할지 여부 전자 상거래 웹 사이트 또는 단순히 온라인으로 집을 만드는 것 디자인 포트폴리오 이 기사에서는 Addy 's Book의 몇 가지 팁을 배우고 이미지를 늦게하고 더 빨리 만드는 데 도움이됩니다.
귀하의 사이트를 살펴보고 중요한 이미지 자산을 식별하십시오. 대부분의 경우, 이것은 가능한 한 빨리 렌더링하고자하는 로고 또는 영웅 이미지가 될 것입니다.
이것은 그 곳입니다 예압 리소스 힌트가 들어옵니다. 예압 브라우저 파서가 그렇지 않으면 브라우저 파서가 발견되기 전에 자산을 검색 해야하는 클라이언트에 힌트하는 방법입니다. 꽤 많은 것들을 위해 사용할 수 있지만 중요한 이미지를 미리로드하기 위해 훌륭하게 작동합니다. 다음은 HTML에서 사용중인 예입니다. & lt; head & gt; 영웅 배너 이미지를 사전로드하기 위해 요소 :
<link rel="preload" href="/img/logo.svg" as="image">
HTTP 헤더에서 예압을 사용할 수도 있습니다.
Link: </img/logo.svg>; rel=preload; as=image
아래에서 두 개의 스크린 샷 롤이 Chrome에서로드되는 두 개의 스크린 샷 롤을 볼 수 있습니다. 한 가지 시나리오가 사용합니다 예압 영웅 배너 이미지를로드하려면 다른 하나는 그렇지 않습니다.
예제에서 예압 , 배너 이미지가 브라우저 창에 절반이 빠릅니다. 브라우저에 머리가 시작된 빠른 원 라이너 때문에 모두.
JPEG 또는 PNG와 달리 SVG는 텍스트, 특히 XML 마크 업으로 구성되어 SVGS를 최적화하는 다른 이미지 유형과 다릅니다. 즉, 텍스트 기반 자산 (예 : Minification, Gzip / Brotli 압축)에 적용 할 전형적인 최적화가 SVG에 적용될 수 있음을 의미합니다. 그 외에도 SVGS의 크기를 튼튼하게하기 위해 SVGO와 같은 최적의 가공기를 사용할 수 있습니다.
그러나 당신이 단순히 벡터 작품을 섭취하지 않고 그것을 만들지 만 그것을 창조하는 것이 무엇입니까? Illustrator 사용자 인 경우 자동으로 아트 워크를 단순화하여 단순화 대화 상자 창을 통해 경로의 앵커 포인트를 줄일 수 있습니다.
이 대화 상자는에서 찾을 수 있습니다 일러스트 레이터 CC. '객체로 이동하여 메뉴 & gt; path & gt; 단순화. 곡선 정밀도 (선택적으로 조정 각도 임계 값)를 줄임으로써 아트웍에서 추가 경로 지점을 제거 할 수 있습니다. 이 경우 6 %의 경로 점을 6 %로 제거하는 곡선 정밀도가 감소하는 것이 좋습니다. 현명하게 사용되면, 아트웍의 모습을 향상시킬 수 있습니다.
현명한 단어에 대한 단어 -이 도구로 얼마나 공격적으로 얻는지 조심하십시오. 곡선 정밀도가 낮고, 한 번 신중하게 조작 된 아트웍이 BLOB로 이루어질 것입니다. 그러나 올바른 균형을 파업하고, 당신은 보상을 얻을 수 있습니다.
우리 모두는 좋은 애니메이션 GIF를 좋아합니다. 그들은 효과적으로 거의 모든 감정을 전달하지만, 정말로 거대 할 수 있습니다. Gifsicle과 같은 이미지는 과도한 킬로바이트를 면도 할 수 있지만 티켓은 그 GIF를 비디오로 변환하고 HTML5에 포함시키는 것입니다. & lt; 비디오 및 gt; 꼬리표. 그만큼 ffmpeg. 명령 줄 유틸리티는이 작업에 적합합니다.
ffmpeg -i Animated.gif -b : V 512K 애니메이션 .webm
ffmpeg -i animated.gif -b : v 512k animated.ogv.
ffmpeg -i animated.gif -b : v 512k 애니메이션 .mp4
위의 명령은 소스 GIF를 취합니다 ( 애니메이션 ) -i 인수의 입력 및 최대 512Kbps의 가변 비트 전송률로 출력 비디오를 출력합니다. 우리 자신의 시험에서 우리는 989KB의 애니메이션 GIF를 취하여 155kB의 MP4, 109KB OGV 및 85KB 웹 메일을 사용해 낼 수있었습니다. 모든 비디오 파일은 소스 GIF와의 품질과 비슷했습니다. 유비크리 때문에 & lt; 비디오 및 gt; 태그 지원 브라우저 에서이 세 가지 비디오 형식은 다음과 같이 사용할 수 있습니다.
& lt; 비디오 preload = "none"& gt; & lt; surc = "/ 비디오 / animated.webm"유형 = "비디오 / webm"& gt; & lt; 소스 src = "/ 비디오 / animated.ogv"유형 = "비디오 / ogg"& gt; & lt; surc = "/ 비디오 / animated.mp4"type = "비디오 / mp4"& gt; & lt; / 비디오 & gt;이 경로가 결정되면 반드시 주문해야합니다. & lt; 소스 & gt; 가장 최적의 형식이 먼저 지정되도록 태그를 지정하고 최소한의 최적값이 마지막으로 지정됩니다. 대부분의 경우 이것은 먼저 WebM 비디오로 시작할 수 있지만 각 비디오의 출력 파일 크기를 확인하고 먼저 가장 작은 것이 무엇이든지를 확인하고 가장 큰 것이 무엇이든간에 끝납니다.
ffmpeg가 없거나 무엇이든지 모르면, 확인 해봐 ...에 홈런 또는 초콜릿과 같은 대부분의 운영 체제 패키지 관리자를 통해 설치가 쉽습니다.
게으른로드 이미지는 이미 수행 중일 수도 있지만 많은 게으른로드 스크립트는 CPU 집약적 인 스크롤 이벤트 핸들러를 사용합니다. 그러한 방법은 페이지에서 부진한 상호 작용에 기여합니다. 처리 능력이 적은 구형 하드웨어는 이러한 유형의 코드의 아픈 영향에 더욱 더 쉽습니다. 실행 스로틀은 정도로 도움이되지만 요소가 뷰포트에있는시기를 결정하기위한 지저분하고 비효율적 인 해결 방법입니다.
고맙게도, 교차점 관찰자 API는 뷰포트에있는시기를 결정하는 것이 더 간단하고 효율적인 방법을 제공합니다. 기본 게으른 이미지 마크 업의 예가 있습니다.
& lt; img class = "lazy"data-src = "/ 이미지 / lazy-loaded-image.jpg"src = "/ image / placeholder.jpg"Alt = "나는 게으르다." 너비 = "320"높이 = "240"& gt;여기에서 우리는 자리 표시 자 이미지를로드합니다 src. 속성, 그런 다음 우리가 원하는 이미지에 대한 URL을 DATA-SRC. 속성. 모든 것을 꼭대기로 옮기기 위해, 우리는 & lt; img & gt; Element assy access. QuerySelectorAll. ...에 거기에서 우리는이 코드를 사용하기 만하면됩니다.
document.addeventListener ( "domContentLoaded", 함수 () {
if ( "intersectionObserver"창 및 amp; "intersectionOBServerentry"창 & amp; & amp; "intersectionRatio"window.intersectionObServerentry.Prototy 형식에서 {
요소 = document.querySelectorAll ( "img.lazy");
var imageObserver = 새로운 intersectionOBServer (함수 (함수) {
Entries.Foreach (함수 (항목) {
if (entry.isintersecting) {
entry.target.setTribute ( "src", entry.target.getAttribute ( "data-src"));
entry.target.classlist.remove ( "게으른");
imageObserver.unobserve (entry.target);
}
});
});
elements.foreach (함수 (이미지) {
imageObserver.observe (이미지);
});
}
});
여기서 우리는 코드를 새로 바인딩합니다 문서 사물 DomContentLoaded 행사. 이 코드는 현재 브라우저에서 교차 관찰자가 지원되는지 확인합니다. 그것이 그것이 밝혀지면 우리는 모두 잡아라. 이유 클래스가있는 요소 게으른 와 QuerySelectorAll. 그런 다음 관찰자를 첨부하십시오.
관찰자는 우리가 관찰하는 요소에 대한 참조를 포함합니다 ( 항목 )와 관찰자 자체 ( 관찰자 짐마자 이 코드는 각 관찰자 항목에 경첩됩니다 isintersecting. 값. 관찰 된 요소가 뷰포트에서 벗어나는 동안, isintersecting. 보고 ... 한 것 ...에 요소가 뷰포트를 입력하면 뷰포트가 들어가면 값보다 큰 값을 반환합니다. ... 한 것 ...에 이미지의 내용을 교환하는 것은이 시점에 있습니다. DATA-SRC. 속성 src. 속성, 그물을 제거하십시오 게으른 수업. 주어진 이미지 게으른 하중 이후에는 관찰자가 옵저버의 unobserve. 방법.
이 프로세스는 스크롤 핸들러로 주위에 섞이는 것보다 훨씬 쉽지만 교차점 관찰자는 보편적 인 지원을 누리지 않으므로 다시 할 수 있습니다. 스크립트를 잡고가는 일이면 교차점 관찰자를 사용하는 게으른 로더를 작성했지만 Yesteryear의 방법으로 돌아갑니다. 당신은 그것을 잡을 수 있습니다 여기 ...에
이 기사는 원래 301 년에 발표되었습니다 그물 웹 디자이너 및 개발자를위한 세계 최고의 잡지. 여기 문제를 구입하십시오 또는 여기를 구독하십시오 ...에
관련 기사:
(이미지 크레디트 : Simon Baek) 시각적 개발이란 무엇입니까? 글쎄, 그것은 이야기를 시각�..
사람들이 검색하고 찾을 수없는 경우에 귀하의 콘텐츠가 아무 데려가지 않으므로 SEO와 같은 요인..