티스토리에 이미지 지연 로드 오프 스크린 로드 lazy load 적용하기
네이버 블로그는 이미지 지연 로드를 지원한다는데 아직 티스토리는 이미지 지연 로드를 지원하지 않는다
이미지 지연 로드를 사용하면 첫 화면 페이지 로딩 속도가 빨라져 구글 seo 점수에 이득이 있는데
티스토리에서도 편법으로 적용되긴 한다.
방법은 우선 밑에 코드를 스킨 html 편집에서 <헤드>와 </헤드> 사이인 </헤드> 바로 위에 삽입하자
<script> document.addEventListener("DOMContentLoaded", () => {
let TICKING = false;
const loadImg = (img) => {
if (img.classList.contains("loaded")) return;
img.src = img.dataset.src;
img.removeAttribute("data-src");
if (img.dataset.srcset) {
img.srcset = img.dataset.srcset;
img.removeAttribute("data-srcset");
}
img.classList.add("loaded");
};
const removeImgSrc = (img) => {
img.dataset.src = img.src;
if (img.dataset.srcset) {
img.dataset.srcset = img.srcset;
img.removeAttribute("srcset");
}
img.src = "복사한_이미지_경로";
};
if ("IntersectionObserver" in window) {
const io = new IntersectionObserver(
(entries, observer) => {
entries.forEach((entry) => {
if (!entry.isIntersecting) return;
const target = entry.target;
loadImg(target);
observer.unobserve(target);
});
},
{
root: null,
rootMargin: "200px",
}
);
document.querySelectorAll(".imageblock img,.imagegridblock img").forEach((img) => {
removeImgSrc(img);
io.observe(img);
});
} else {
const scrollEvent = () => {
const { scrollY } = window;
document.querySelectorAll(".imageblock img,.imagegridblock img").forEach((img) => {
if (img.classList.contains("loaded")) return;
const offsetTop = img.parentNode.offsetTop;
if (
offsetTop + img.offsetHeight > scrollY &&
scrollY + window.innerHeight > offsetTop
) {
loadImg(img);
}
});
};
document.querySelectorAll(".imageblock img,.imagegridblock img").forEach((img) => {
removeImgSrc(img);
scrollEvent();
window.addEventListener(
"scroll",
() => {
TICKING ||
(window.requestAnimationFrame(() => {
loadImg();
TICKING = false;
}),
(TICKING = true));
},
{ passive: true }
);
});
}
}); </script>
밑에 코드는 줄 바꿈 안 한 같은 코드이다
<script> document.addEventListener("DOMContentLoaded",()=>{let e=!1;const t=e=>{e.classList.contains("loaded")||(e.src=e.dataset.src,e.removeAttribute("data-src"),e.dataset.srcset&&(e.srcset=e.dataset.srcset,e.removeAttribute("data-srcset")),e.classList.add("loaded"))},s=e=>{e.dataset.src=e.src,e.dataset.src&&(e.dataset.srcset=e.srcset,e.removeAttribute("srcset")),e.src="복사한_이미지_경로"};if("IntersectionObserver"in window){const e=new IntersectionObserver((e,s)=>{e.forEach(e=>{if(!e.isIntersecting)return;const r=e.target;t(r),s.unobserve(r)})},{root:null,rootMargin:"200px"});document.querySelectorAll(".imageblock img,.imagegridblock img").forEach(t=>{s(t),e.observe(t),t.classList.add("observing")})}else{const r=()=>{const{scrollY:e}=window;document.querySelectorAll(".imageblock img,.imagegridblock img").forEach(s=>{if(s.classList.contains("loaded"))return;const r=s.parentNode.offsetTop;r+s.offsetHeight>e&&e+window.innerHeight>r&&t(s)})};document.querySelectorAll(".imageblock img,.imagegridblock img").forEach(o=>{s(o),r(),window.addEventListener("scroll",()=>{e||(window.requestAnimationFrame(()=>{t(),e=!1}),e=!0)},{passive:!0})})}}); </script>
그 다음 밑에 파일을 스킨 편집에 들어가서 그 뒤 html 편집에 들어가서 파일 탭에 들어간다
그 파일탭에서 저 파일을 다운로드하여 올리면 된다. 그 뒤에 그 올린 파일을 클릭한뒤 우클릭을 해서 링크 복사를 클릭한다.
그 복사한 링크를 저기 코드의 복사한_이미지_경로 안에 집어넣는다. 따옴표안에 집어넣어야 되며 따옴표는 남아있어야 된다.
이렇게 하면 되는데 나는 적용해보니 경고가 뜨고 seo 점수에 크게 변화가 없어서 다시 지웠다.
뭔가 티스토리에서 지원을 안 하는데 편법으로 지원하는 거라 오류가 있는 건가 싶은데.
밑에 링크분 코드이므로 혹시 모르거나 안되거나 하면 밑의 링크로 질문하도록 하자.
'정보 Tips > 티스토리 Tistory' 카테고리의 다른 글
티스토리 블로그 움짤이 움직이지 않을 때 방법 (0) | 2021.09.18 |
---|---|
티스토리 카테고리의 다른 글 폰트 크기 조절 (0) | 2021.07.30 |
구글 애드센스 세금 정보 등록 방법 (1) | 2021.05.24 |
티스토리 사이드바 고정 플로팅 광고 간단히 하는법 (1) | 2021.05.22 |
애드센스 광고 cls 개선 거리 조절 방법 (0) | 2021.05.20 |
애드센스 비동기 지연 로딩 스크립트 줄이기 (0) | 2021.05.20 |
티스토리 기본 공식 스킨 속도 비교 (0) | 2021.05.18 |
티스토리 애드센스 중복 스크립트 제거 (0) | 2021.05.16 |