ํ๋ก ํธ์๋ ๋คํธ์ํฌ ์ ๋ณด API๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ ํ์ง์ ๋ฐ๋ผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ๋์ ์ผ๋ก ์กฐ์ ํจ์ผ๋ก์จ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค์ธ์. ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ฑ๋ฅ๊ณผ ์ฐธ์ฌ๋๋ฅผ ๊ฐ์ ํฉ๋๋ค.
ํ๋ก ํธ์๋ ๋คํธ์ํฌ ์ ๋ณด API: ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ์ฐ๊ฒฐ ํ์ง์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์กฐ์
์ค๋๋ ๊ณผ ๊ฐ์ด ์ํธ ์ฐ๊ฒฐ๋ ์ธ์์์ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๋ ๋ค์ํ ์ฅ์์์ ๋ค์ํ ์ฅ์น์ ๋คํธ์ํฌ ์ ํ์ ์ฌ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ก์ธ์คํฉ๋๋ค. ๋์ ์ค์ฌ๋ถ์ ๊ณ ์ ๊ด์ฌ์ ์ฐ๊ฒฐ์์ ๋์ด ์ง์ญ์ ๋๋ฆฐ ๋ชจ๋ฐ์ผ ๋คํธ์ํฌ์ ์ด๋ฅด๊ธฐ๊น์ง ์ฐ๊ฒฐ ํ์ง์ ํฌ๊ฒ ๋ค๋ฅผ ์ ์์ต๋๋ค. ํ๋ก ํธ์๋ ๋คํธ์ํฌ ์ ๋ณด API๋ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์์ ๋คํธ์ํฌ ์ฐ๊ฒฐ ํ์ง์ ๊ฐ์งํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ๋์ ์ผ๋ก ์กฐ์ ํ์ฌ ์ฑ๋ฅ๊ณผ ์ฐธ์ฌ๋๋ฅผ ์ต์ ํํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋คํธ์ํฌ ์ ๋ณด API๋ ๋ฌด์์ ๋๊น?
๋คํธ์ํฌ ์ ๋ณด API๋ ์ฌ์ฉ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ JavaScript API์ ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์๊ณผ ๊ฐ์ ์ธ๋ถ ์ ๋ณด์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ๋คํธ์ํฌ ์ ํ: ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ ํ(์: wifi, cellular, ethernet)
- ํจ๊ณผ์ ์ธ ์ ํ: ์๋ณต ์๊ฐ(RTT) ๋ฐ ๋ค์ด๋งํฌ ๋์ญํญ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ฐ๊ฒฐ ์๋ ์ถ์ ์น(์: 'slow-2g', '2g', '3g', '4g')
- ๋ค์ด๋งํฌ: ์ด๋น ๋ฉ๊ฐ๋นํธ(Mbps) ๋จ์์ ์์ ์ต๋ ๋ค์ด๋งํฌ ์๋
- RTT(์๋ณต ์๊ฐ): ํ์ฌ ์ฐ๊ฒฐ์ ์์ ์๋ณต ์๊ฐ(๋ฐ๋ฆฌ์ด)
- Save-Data: ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ฌ์ฉ๋ ๊ฐ์ ์์ฒญ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
์ด ์ ๋ณด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฝํ ์ธ ์ ๊ณต ๋ฐฉ๋ฒ, ๋ฆฌ์์ค ์ต์ ํ ๋ฐ ์ฌ์ฉ์ ๋คํธ์ํฌ ํ๊ฒฝ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค. ์ด API๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ๋ณด๋ค ๋ฐ์์ฑ์ด ๋ฐ์ด๋๊ณ ํจ์จ์ ์ด๋ฉฐ ์ฌ์ฉ์ ์นํ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ฐ๊ฒฐ ํ์ง ์กฐ์ ์ด ์ค์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ฐ๊ฒฐ ํ์ง์ ๋ง๊ฒ ์กฐ์ ํ๋ ๊ฒ์ด ์ค์ํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ์ฌ์ฉ์๋ ๋น ๋ฅด๊ฒ ๋ก๋๋๊ณ ๋ถ๋๋ฝ๊ฒ ์๋ตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋ง์ด ์ฐธ์ฌํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋คํธ์ํฌ ํ๊ฒฝ์ ๋ฐ๋ผ ์ฝํ ์ธ ์ ๋ฌ์ ์ต์ ํํ๋ฉด ๋ก๋ฉ ์๊ฐ์ ์ต์ํํ๊ณ ๋ต๋ตํ ์ง์ฐ์ ๋ฐฉ์งํ์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋๋ฆฐ 2G ์ฐ๊ฒฐ์ ์ฌ์ฉ์๋ ๋ ์์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋จ์ํ๋ ๋ฒ์ ์ ๋ฐ์ ์ ์๋ ๋ฐ๋ฉด, 4G ์ฐ๊ฒฐ์ ์ฌ์ฉ์๋ ๋ ํ๋ถํ๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ ๊ฒฝํ์ ์ฆ๊ธธ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์๋น ๊ฐ์: ๋ฐ์ดํฐ ์๊ธ์ ๊ฐ ์ ํ์ ์ด๊ฑฐ๋ ๋ฐ์ดํฐ ์๊ธ์ด ๋น์ผ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์๋น๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
saveData์์ฑ๊ณผ ์ฐ๊ฒฐ ์ ํ์ ๋ํ ์ง์์ ํตํด ๊ฐ๋ฐ์๋ ๋ ๊ฐ๋ฒผ์ด ๋ฒ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๊ณ , ์ด๋ฏธ์ง๋ฅผ ์์ถํ๊ณ , ์๋ ์ฌ์ ๋น๋์ค๋ฅผ ๋นํ์ฑํํ์ฌ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฝํ๋๋ก ๋์ธ ์ ์์ต๋๋ค. ์ด๋ ์ํ๋ฆฌ์นด ๋๋ ๋จ์๋ฉ๋ฆฌ์นด ์ผ๋ถ ์ง์ญ๊ณผ ๊ฐ์ด ๋ชจ๋ฐ์ผ ๋ฐ์ดํฐ๊ฐ ๋น์ธ๊ฑฐ๋ ๋์ญํญ์ด ์ ํ๋ ์ง์ญ์์ ํนํ ์ค์ํฉ๋๋ค. - ํฅ์๋ ์ฑ๋ฅ: ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ๋์ ์ผ๋ก ์กฐ์ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋์ญํญ ๋ฐ ์ง์ฐ ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋๋ฆฐ ์ฐ๊ฒฐ์์ ๋ถํ์ํ ๋ฆฌ์์ค ๋ก๋ฉ์ ์ฐ๊ธฐํ๊ฑฐ๋ ์ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ธฐ๋ฅ์ด ์๋ต์ฑ์ ์ ์งํ๋๋ก ํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ ๊ทผ์ฑ: ์ฐ๊ฒฐ ํ์ง์ ๋ง๊ฒ ์กฐ์ ํ๋ฉด ์ธํฐ๋ท ์ ์์ด ์ด์ ํ๊ฑฐ๋ ๋ถ์์ ํ ์ง์ญ์ ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋๋ฆฐ ์ฐ๊ฒฐ์ ์ฌ์ฉ์๋ฅผ ์ํ ๊ฐ์ํ๋ ๊ฒฝํ์ ์ ๊ณตํจ์ผ๋ก์จ ๋ชจ๋ ์ฌ๋์ด ์ฝํ ์ธ ์ ์๋น์ค์ ์ ๊ทผํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ๋๋ฌ ๋ฒ์: ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ ๋ค์ํ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋คํธ์ํฌ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง๋ฅ์ ์ผ๋ก ์กฐ์ ํ๋ฉด ์ฐ๊ฒฐ ์๋์ ๊ด๊ณ์์ด ์ ์ธ๊ณ ์ฌ์ฉ์์ ์ ์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋คํธ์ํฌ ์ ๋ณด API ์ฌ์ฉ ๋ฐฉ๋ฒ
๋คํธ์ํฌ ์ ๋ณด API๋ navigator.connection ์์ฑ์ ํตํด ์ ๊ทผํฉ๋๋ค. ๋ค์์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ ์์
๋๋ค.
if ('connection' in navigator) {
const connection = navigator.connection;
console.log('Network Type:', connection.type);
console.log('Effective Type:', connection.effectiveType);
console.log('Downlink Speed:', connection.downlink + ' Mbps');
console.log('Round Trip Time:', connection.rtt + ' ms');
console.log('Save Data:', connection.saveData);
connection.addEventListener('change', () => {
console.log('Connection changed!');
console.log('Effective Type:', connection.effectiveType);
});
} else {
console.log('Network Information API is not supported.');
}
์ค๋ช :
- ์ง์ ํ์ธ: ์ฝ๋๋ ๋จผ์
navigator๊ฐ์ฒด์connection์์ฑ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด๋ฅผ ํตํด API๊ฐ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋์ง ํ์ธํฉ๋๋ค. - ์ฐ๊ฒฐ ์ ๋ณด ์ ๊ทผ: API๊ฐ ์ง์๋๋ ๊ฒฝ์ฐ ์ฝ๋๋
connection๊ฐ์ฒด์ ์ ๊ทผํ๊ณ ๋คํธ์ํฌ ์ ํ, ํจ๊ณผ์ ์ธ ์ ํ, ๋ค์ด๋งํฌ ์๋, ์๋ณต ์๊ฐ ๋ฐ ๋ฐ์ดํฐ ์ ์ฝ ๊ธฐ๋ณธ ์ค์ ๊ณผ ๊ฐ์ ๋ค์ํ ์์ฑ์ ์ฝ์์ ๊ธฐ๋กํฉ๋๋ค. - ๋ณ๊ฒฝ ์ฌํญ ์์ ๋๊ธฐ: ์ฝ๋๋ ๋ํ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ ๋๊ธฐํ๊ธฐ ์ํด
connection๊ฐ์ฒด์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฐ๊ฒฐ์ด ๋ณ๊ฒฝ๋๋ฉด(์: ์ฌ์ฉ์๊ฐ Wi-Fi์์ ์ ๋ฃฐ๋ฌ๋ก ์ ํ) ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ํธ๋ฆฌ๊ฑฐ๋๊ณ ์ฝ๋๋ ์ ๋ฐ์ดํธ๋ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ฝ์์ ๊ธฐ๋กํฉ๋๋ค. - ์ง์๋์ง ์๋ ๋ธ๋ผ์ฐ์ ์ฒ๋ฆฌ: API๊ฐ ์ง์๋์ง ์๋ ๊ฒฝ์ฐ ์ฝ๋๋ API๋ฅผ ์ฌ์ฉํ ์ ์์์ ๋ํ๋ด๋ ๋ฉ์์ง๋ฅผ ์ฝ์์ ๊ธฐ๋กํฉ๋๋ค.
์ฐ๊ฒฐ ํ์ง ์กฐ์ ์ ์ค์ ์
๋ค์์ ์ฐ๊ฒฐ ํ์ง์ ๋ฐ๋ผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์กฐ์ ํ๊ธฐ ์ํด ๋คํธ์ํฌ ์ ๋ณด API๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์ค์ ์์ ๋๋ค.
1. ์ ์ํ ์ด๋ฏธ์ง ๋ก๋ฉ
effectiveType์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์ด๋ฏธ์ง ํด์๋๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
function loadImage(imageUrl, effectiveType) {
let imageSource = imageUrl;
if (effectiveType === 'slow-2g' || effectiveType === '2g') {
// Load a low-resolution image
imageSource = imageUrl.replace('.jpg', '_lowres.jpg');
} else if (effectiveType === '3g') {
// Load a medium-resolution image
imageSource = imageUrl.replace('.jpg', '_medres.jpg');
} else {
// Load a high-resolution image
imageSource = imageUrl;
}
const img = new Image();
img.src = imageSource;
return img;
}
if ('connection' in navigator) {
const connection = navigator.connection;
const imageElement = document.getElementById('myImage');
imageElement.src = loadImage('/images/myimage.jpg', connection.effectiveType).src;
}
์ค๋ช
: ์ด ์ฝ๋ ์กฐ๊ฐ์ ์ด๋ฏธ์ง URL๊ณผ ํจ๊ณผ์ ์ธ ์ฐ๊ฒฐ ์ ํ์ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ํจ์ loadImage๋ฅผ ์ ์ํฉ๋๋ค. ์ฐ๊ฒฐ ์ ํ์ ๋ฐ๋ผ ํจ์๋ ๋ค์ํ ์ด๋ฏธ์ง ์์ค, ์ฆ ๋๋ฆฐ ์ฐ๊ฒฐ์๋ ์ ํด์๋ ์ด๋ฏธ์ง, 3G ์ฐ๊ฒฐ์๋ ์ค๊ฐ ํด์๋ ์ด๋ฏธ์ง, ๋ ๋น ๋ฅธ ์ฐ๊ฒฐ์๋ ๊ณ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ navigator.connection ๊ฐ์ฒด์์ ํจ๊ณผ์ ์ธ ์ฐ๊ฒฐ ์ ํ์ ๊ฒ์ํ๊ณ loadImage ํจ์๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉ์ ์ฐ๊ฒฐ์ ์ ํฉํ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๋ฆฐ ์ฐ๊ฒฐ์ ์ฌ์ฉ์๊ฐ ํฌ๊ณ ๊ณ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ ํ์๊ฐ ์์ด ๋ก๋ฉ ์๊ฐ๊ณผ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
2. ์ค์ํ์ง ์์ ์ฝํ ์ธ ์ฐ๊ธฐ
๋๋ฆฐ ์ฐ๊ฒฐ์์๋ ์ฃผ ์ฝํ ์ธ ๊ฐ ๋ก๋๋ ํ์ ๋๊ธ, ๊ด๋ จ ๊ธฐ์ฌ ๋๋ ์์ ๋ฏธ๋์ด ์์ ฏ๊ณผ ๊ฐ์ ์ค์ํ์ง ์์ ์ฝํ ์ธ ๋ก๋ฉ์ ์ฐ๊ธฐํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ง๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
function loadNonEssentialContent() {
// Load comments, related articles, social media widgets, etc.
console.log('Loading non-essential content...');
// Simulate loading content with a timeout
setTimeout(() => {
console.log('Non-essential content loaded.');
}, 2000);
}
if ('connection' in navigator) {
const connection = navigator.connection;
if (connection.effectiveType === 'slow-2g' || connection.effectiveType === '2g') {
// Defer loading non-essential content for slow connections
console.log('Deferring non-essential content due to slow connection.');
} else {
// Load non-essential content immediately for faster connections
loadNonEssentialContent();
}
} else {
// Load non-essential content by default if the API is not supported
loadNonEssentialContent();
}
์ค๋ช
: ์ด ์ฝ๋ ์กฐ๊ฐ์ ๋๊ธ, ๊ด๋ จ ๊ธฐ์ฌ ๋๋ ์์
๋ฏธ๋์ด ์์ ฏ๊ณผ ๊ฐ์ ์ค์ํ์ง ์์ ์ฝํ
์ธ ๋ก๋ฉ์ ์๋ฎฌ๋ ์ด์
ํ๋ ํจ์ loadNonEssentialContent๋ฅผ ์ ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ navigator.connection ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํจ๊ณผ์ ์ธ ์ฐ๊ฒฐ ์ ํ์ ํ์ธํฉ๋๋ค. ์ฐ๊ฒฐ ์ ํ์ด slow-2g ๋๋ 2g์ธ ๊ฒฝ์ฐ ์ฝ๋๋ ์ค์ํ์ง ์์ ์ฝํ
์ธ ๋ก๋ฉ์ ์ฐ๊ธฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฝํ
์ธ ๋ฅผ ์ฆ์ ๋ก๋ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๋ฆฐ ์ฐ๊ฒฐ์ ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ฃผ ์ฝํ
์ธ ์ ์ ๊ทผํ๊ธฐ ์ ์ ์ค์ํ์ง ์์ ์ฝํ
์ธ ๊ฐ ๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ด ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ๊ณผ ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ์ง๋ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
3. ์๋ ์ฌ์ ๋น๋์ค ๋นํ์ฑํ
์๋ ์ฌ์ ๋น๋์ค๋ ์๋นํ ์์ ๋์ญํญ์ ์๋นํ ์ ์์ต๋๋ค. ๋๋ฆฐ ์ฐ๊ฒฐ์์ ๋๋ saveData ์์ฑ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ์๋ ์ฌ์ ๋น๋์ค๋ฅผ ๋นํ์ฑํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฝํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
const video = document.getElementById('myVideo');
if ('connection' in navigator) {
const connection = navigator.connection;
if (connection.saveData || connection.effectiveType === 'slow-2g' || connection.effectiveType === '2g') {
// Disable autoplay for slow connections or when save data is enabled
video.autoplay = false;
video.muted = true; // Mute the video to prevent audio from playing
console.log('Autoplay disabled to save data or due to slow connection.');
} else {
// Enable autoplay for faster connections
video.autoplay = true;
video.muted = false;
console.log('Autoplay enabled.');
}
} else {
// Enable autoplay by default if the API is not supported
video.autoplay = true;
video.muted = false;
}
์ค๋ช
: ์ด ์ฝ๋ ์กฐ๊ฐ์ DOM์์ ๋น๋์ค ์์๋ฅผ ๊ฒ์ํ๊ณ navigator.connection ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํจ๊ณผ์ ์ธ ์ฐ๊ฒฐ ์ ํ๊ณผ saveData ์์ฑ์ ํ์ธํฉ๋๋ค. ์ฐ๊ฒฐ ์ ํ์ด slow-2g ๋๋ 2g์ด๊ฑฐ๋ saveData ์์ฑ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ์ฝ๋๋ ๋น๋์ค์ ์๋ ์ฌ์์ ๋นํ์ฑํํ๊ณ ์ค๋์ค ์ฌ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋น๋์ค๋ฅผ ์์๊ฑฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ ์ฌ์์ ํ์ฑํํ๊ณ ๋น๋์ค๋ฅผ ์์๊ฑฐ ํด์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๋ฆฐ ์ฐ๊ฒฐ์ ์ฌ์ฉ์ ๋๋ saveData ์์ฑ์ ํ์ฑํํ ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ๋น๋์ค๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ฌ์ํ ํ์๊ฐ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฝํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
4. ์ ํ์ง ๋น๋์ค ์คํธ๋ฆผ ์ฌ์ฉ
๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ฐ๊ฒฐ ์๋์ ๋ฐ๋ผ ๋น๋์ค ํ์ง์ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฒํผ๋ง์ ๋ฐฉ์งํ๊ณ ๋๋ฆฐ ์ฐ๊ฒฐ์์๋ ์ํํ ์ฌ์ ํ๊ฒฝ์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ง์ ๋น๋์ค ํ๋ ์ด์ด(์: HLS.js ๋๋ dash.js)๋ฅผ ์ฌ์ฉํ๋ฉด ๋คํธ์ํฌ ์ ๋ณด API์์ ์ ๊ณตํ ์ ์๋ ๋์ ํ์ง ์ ํ์ด ๊ฐ๋ฅํฉ๋๋ค.
// Assuming you are using a video player library like HLS.js
if ('connection' in navigator) {
const connection = navigator.connection;
// Function to dynamically set video quality based on connection
function setVideoQuality(effectiveType) {
let qualityLevel;
if (effectiveType === 'slow-2g' || effectiveType === '2g') {
qualityLevel = 'low';
} else if (effectiveType === '3g') {
qualityLevel = 'medium';
} else {
qualityLevel = 'high';
}
// Example with HLS.js (replace with your specific player's API)
if (hls) {
switch (qualityLevel) {
case 'low':
hls.levels.forEach(level => level.height < 360 ? hls.currentLevel = level.index : null);
break;
case 'medium':
hls.levels.forEach(level => level.height >= 360 && level.height < 720 ? hls.currentLevel = level.index : null);
break;
case 'high':
hls.currentLevel = -1; // Auto-select highest quality
break;
}
}
}
// Initial quality setting
setVideoQuality(connection.effectiveType);
// Listen for changes and adjust quality accordingly
connection.addEventListener('change', () => {
setVideoQuality(connection.effectiveType);
});
}
์ค๋ช
: ์ด ์์ ์์๋ HLS.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋์ค ํ์ง์ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ํจ๊ณผ์ ์ธ ์ฐ๊ฒฐ ์ ํ์ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ๊ณ ์ฐ๊ฒฐ ์ ํ์ ๋ฐ๋ผ ๋น๋์ค ํ์ง ์์ค์ ๋ฎ์, ์ค๊ฐ ๋๋ ๋์์ผ๋ก ์ค์ ํ๋ ํจ์ setVideoQuality๋ฅผ ์ ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ง ์์ค์ ๋ฐ๋ณตํ๊ณ ์ฐ๊ฒฐ ์ ํ์ ๋ฐ๋ผ ํ์ฌ ์์ค์ ์ ์ ํ ํ์ง๋ก ์ค์ ํฉ๋๋ค. hls.currentLevel = -1; ์ค์ ์ HLS.js์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋์ ํ์ง์ ์๋์ผ๋ก ์ ํํ๋๋ก ์ง์ํฉ๋๋ค. ๋ํ ์ฝ๋๋ connection ๊ฐ์ฒด์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ์ฌ ์ฐ๊ฒฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋น๋์ค ํ์ง์ ์กฐ์ ํฉ๋๋ค.
5. ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์ต์ ํ
์ฐ๊ฒฐ ํ์ง์ ๋ฐ๋ผ ์๋ฒ์์ ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ์ ๋น๋์ ์์ ์กฐ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋๋ฆฐ ์ฐ๊ฒฐ์์๋ ์ ๋ฐ์ดํธ ํด๋ง ๋น๋๋ฅผ ์ค์ด๊ฑฐ๋ ๋ ์์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
function fetchData(url, effectiveType) {
let interval = 5000; // Default polling interval (5 seconds)
if (effectiveType === 'slow-2g' || effectiveType === '2g') {
interval = 30000; // Poll every 30 seconds on slow connections
} else if (effectiveType === '3g') {
interval = 15000; // Poll every 15 seconds on 3G connections
}
setInterval(() => {
fetch(url)
.then(response => response.json())
.then(data => {
console.log('Data fetched:', data);
// Update the UI with the new data
})
.catch(error => {
console.error('Error fetching data:', error);
});
}, interval);
}
if ('connection' in navigator) {
const connection = navigator.connection;
fetchData('/api/data', connection.effectiveType);
}
์ค๋ช
: ์ด ์ฝ๋ ์กฐ๊ฐ์ URL๊ณผ ํจ๊ณผ์ ์ธ ์ฐ๊ฒฐ ์ ํ์ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ํจ์ fetchData๋ฅผ ์ ์ํฉ๋๋ค. ์ด ํจ์๋ ๊ธฐ๋ณธ ํด๋ง ๊ฐ๊ฒฉ์ 5์ด๋ก ์ค์ ํ์ง๋ง ๊ฐ๊ฒฉ์ ๋๋ฆฐ ์ฐ๊ฒฐ(slow-2g ๋๋ 2g)์ ๊ฒฝ์ฐ 30์ด, 3G ์ฐ๊ฒฐ์ ๊ฒฝ์ฐ 15์ด๋ก ์กฐ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ setInterval์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ๊ฐ๊ฒฉ์ผ๋ก ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ธ์ต๋๋ค. ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ ์ฒ๋ฆฌ๋ ํ UI๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๋น๋๋ฅผ ์ค์ฌ ๋๋ฆฐ ์ฐ๊ฒฐ์์ ๊ณผ๋ํ ๋์ญํญ์ ์๋นํ์ง ์์ต๋๋ค.
์ฐ๊ฒฐ ํ์ง ์กฐ์ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๋ค์์ ์ฐ๊ฒฐ ํ์ง ์กฐ์ ์ ๊ตฌํํ ๋ ๋ฐ๋ผ์ผ ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค.
- ์ ์ง์ ํฅ์: ๋คํธ์ํฌ ์ ๋ณด API๋ฅผ ์ ์ง์ ํฅ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค. API๊ฐ ์ง์๋์ง ์๋๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ ํ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํด์ผ ํฉ๋๋ค.
- ๊ทธ๋ ์ด์คํ ๋๊ทธ๋ ์ด์ : ๋๋ฆฐ ์ฐ๊ฒฐ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ์์ ์ผ๋ก ์ ํ์ํค๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ธํฉ๋๋ค. ๊ฐ์์ค๋ฌ์ด ๋ณ๊ฒฝ์ด๋ ๊นจ์ง ๊ธฐ๋ฅ์ ํผํ์ญ์์ค.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ํ์ง ์กฐ์ ์ ์ํฅ์ ์ถ์ ํฉ๋๋ค. ๋ก๋ฉ ์๊ฐ, ๋ฆฌ์์ค ์ฌ์ฉ๋ ๋ฐ ์ฌ์ฉ์ ์ฐธ์ฌ๋๋ฅผ ์ธก์ ํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ์ํ๋ ํจ๊ณผ๋ฅผ ๋ด๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
- ์ฒ ์ ํ ํ ์คํธ: ๋ค์ํ ์ฅ์น์ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ฌ ๋ชจ๋ ์๋๋ฆฌ์ค์์ ์ ์๋ํ๋์ง ํ์ธํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋คํธ์ํฌ ์๋์ ์ง์ฐ ์๊ฐ์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.
- ์ฌ์ฉ์ ๊ธฐ๋ณธ ์ค์ ๊ณ ๋ ค: ์ฌ์ฉ์๊ฐ ์๋ ์ฐ๊ฒฐ ํ์ง ์กฐ์ ์ ์ฌ์ ์ํ๋๋ก ํ์ฉํฉ๋๋ค. ์ด๋ฏธ์ง ํ์ง์ ์๋์ผ๋ก ์ ํํ๊ฑฐ๋, ์๋ ์ฌ์ ๋น๋์ค๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋, ๋ฐ์ดํฐ ์ฌ์ฉ๋์ ์ค์ด๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- ์บ์ฑ ์ฌ์ฉ: ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค์ด๋ก๋ํด์ผ ํ๋ ๋ฐ์ดํฐ ์์ ์ค์ด๊ธฐ ์ํด ์บ์ฑ ์ ๋ต์ ๊ตฌํํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์บ์ฑ, ์๋น์ค ์์ปค ๋ฐ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)๋ฅผ ์ฌ์ฉํ์ฌ ์์ฃผ ์ ๊ทผํ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๋ฆฌ์์ค ์ต์ ํ: ์ด๋ฏธ์ง, ๋น๋์ค ๋ฐ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ์น ์ฌ์ดํธ์ ๋ฆฌ์์ค๋ฅผ ์ต์ ํํฉ๋๋ค. ์ด๋ฏธ์ง๋ฅผ ์์ถํ๊ณ , JavaScript ๋ฐ CSS ํ์ผ์ ์ต์ํํ๊ณ , ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- CDN(์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ) ์ฌ์ฉ: ์ ์ธ๊ณ ์ฌ๋ฌ ์๋ฒ์ ์น ์ฌ์ดํธ ์ฝํ ์ธ ๋ฅผ ๋ฐฐํฌํ์ฌ ๋๊ธฐ ์๊ฐ์ ์ค์ด๊ณ ๋ค๋ฅธ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ์ํ ๋ก๋ฉ ์๊ฐ์ ํฅ์์ํต๋๋ค.
์ ํ ์ฌํญ ๋ฐ ๊ณ ๋ ค ์ฌํญ
๋คํธ์ํฌ ์ ๋ณด API๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ด์ง๋ง ์ ํ ์ฌํญ์ ์๊ณ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ง์: ๋คํธ์ํฌ ์ ๋ณด API๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋์ง ์์ต๋๋ค. API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ํญ์ ์ง์์ ํ์ธํ๊ณ ์ง์๋์ง ์๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๋์ฒด ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- ์ ํ์ฑ: API์์ ์ ๊ณตํ๋ ์ ๋ณด๋ ์ถ์ ์น์ด๋ฉฐ ํญ์ ์ ํํ์ง ์์ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ํ๊ฒฝ์ ๋น ๋ฅด๊ฒ ๋ณํ ์ ์์ผ๋ฏ๋ก ์ฐ๊ฒฐ ํ์ง์ ๋ณ๋์ ๋๋นํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๊ฐ์ธ ์ ๋ณด ๋ณดํธ: API๋ ์ฌ์ฉ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ ์ฌ์ฉ์๋ฅผ ์ถ์ ํ๊ฑฐ๋ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. API๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํฌ๋ช ํ๊ฒ ๋ฐํ๊ณ ์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ์กด์คํฉ๋๋ค.
- ์คํธํ: API ๋ฐ์ดํฐ๋ ์คํธํ๋ ์ ์์ต๋๋ค(์ฌ์ฉ์ ๋๋ ๋คํธ์ํฌ ํ๊ฒฝ์ ์ํด ์กฐ์๋จ). ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฅ์ด ์๋ ํํธ๋ก ์ทจ๊ธํ์ญ์์ค. ์ค์ํ ๋ณด์ ๋๋ ๊ธฐ๋ฅ ๊ฒฐ์ ์ ์ด ๋ฐ์ดํฐ์๋ง ์์กดํ์ง ๋ง์ญ์์ค.
๊ธฐ๋ณธ ์ฌํญ ์ด์: ๊ณ ๊ธ ๊ธฐ์
๊ธฐ๋ณธ ์ฌํญ์ ์ต์ํด์ง๋ฉด ๋ณด๋ค ๊ณ ๊ธ ๊ธฐ์ ์ ํ์ํ ์ ์์ต๋๋ค.
- RUM(์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง)๊ณผ ๊ฒฐํฉ: ๋คํธ์ํฌ ์ ๋ณด API ๋ฐ์ดํฐ๋ฅผ RUM ๋๊ตฌ์ ํตํฉํ์ฌ ์ค์ ์๋๋ฆฌ์ค์์ ๋คํธ์ํฌ ํ๊ฒฝ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฏธ์น๋ ์ํฅ์ ๋ ๊น์ด ์ดํดํ ์ ์์ต๋๋ค.
- ์์ธก ๋ก๋ฉ: ๋จธ์ ๋ฌ๋ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฏธ๋ ๋คํธ์ํฌ ํ๊ฒฝ์ ์์ธกํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ์ฌ์ ์ ์กฐ์ ํฉ๋๋ค.
- ์๋น์ค ์์ปค ํตํฉ: ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์บ์ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์คํ๋ผ์ธ ์ ๊ทผ์ ์ ๊ณตํ์ฌ ์ธํฐ๋ท ์ ์์ด ๋ถ์์ ํ ์ง์ญ์์ ๋ณต์๋ ฅ์ ํฅ์์ํต๋๋ค.
- ๋์ ์ฝ๋ ๋ถํ : ์ฐ๊ฒฐ ์๋์ ๋ฐ๋ผ ๋ค์ํ ์ฝ๋ ๋ฒ๋ค์ ๋ก๋ํ์ฌ ๋๋ฆฐ ์ฐ๊ฒฐ์ ์ฌ์ฉ์๊ฐ ๋ถํ์ํ ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํ์ง ์๋๋ก ํฉ๋๋ค.
์ฐ๊ฒฐ ํ์ง ์กฐ์ ์ ๋ฏธ๋
์ฐ๊ฒฐ ํ์ง ์กฐ์ ๋ถ์ผ๋ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ๋คํธ์ํฌ ๊ธฐ์ ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์์ ํจ์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋๋ก ์ง์ํ๋ ์๋ก์ด ๋๊ตฌ์ ๊ธฐ์ ์ด ๋ฑ์ฅํ ๊ฒ์ ๋๋ค. 5G, Wi-Fi 6 ๋ฐ ์์ฑ ์ธํฐ๋ท๊ณผ ๊ฐ์ ์๋ก์ด ๊ธฐ์ ์ ์ฃผ๋ชฉํ์ญ์์ค. ์ด๋ฌํ ๊ธฐ์ ์ ์ฐ๊ฒฐ ํ์ง ์กฐ์ ์ ๋ํ ์๋ก์ด ๊ธฐํ์ ๊ณผ์ ๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค.
๋คํธ์ํฌ ์ ๋ณด API๋ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์ ์ ์ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํ ๋๊ตฌ์ ๋๋ค. ์ฌ์ฉ์ ์ฐ๊ฒฐ ํ์ง์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ๋์ ์ผ๋ก ์กฐ์ ํจ์ผ๋ก์จ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ณ , ๋ฐ์ดํฐ ์๋น๋ฅผ ์ค์ด๊ณ , ์ฑ๋ฅ์ ํฅ์์ํค๊ณ , ์ ๊ทผ์ฑ์ ๋์ฌ ๊ถ๊ทน์ ์ผ๋ก ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋ ๋์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์น๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ๋์๊ฒ ์ ์๋ํ๋ ์ง์ ์ผ๋ก ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๋ ๋คํธ์ํฌ ์ ๋ณด API์์ ์ ๊ณตํ๋ ํต์ฐฐ๋ ฅ์ ํ์ฉํ์ฌ ์ธํฐ๋ท ์ธํ๋ผ ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ๊ด๋ฒ์ํ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ์ ์ธ๊ณ ๊ฐ์ธ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ฌ์ ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ ์ํ ์ ๋ฌ์ ๋ํ ์ด๋ฌํ ๋ ธ๋ ฅ์ ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ํฅ์์ํฌ ๋ฟ๋ง ์๋๋ผ ๋ณด๋ค ๊ณตํํ๊ณ ํฌ์ฉ์ ์ธ ๋์งํธ ํ๊ฒฝ์ ๊ธฐ์ฌํฉ๋๋ค.