Mรกs contenido relacionado
La actualidad mรกs candente (9)
Similar a High performance websites v1.0 (20)
High performance websites v1.0
- 6. Downloading percentage ๋ณดํต ์น์ฌ์ดํธ์์ Html ๋ฌธ์๋ฅผ ์น ์๋ฒ๋ก๋ถํฐ ๋ค์ด(Back-end) ๋ฐ๋๋ฐ ์์๋๋ ์๊ฐ์ 10~20%์ด๋ค. ๊ทธ ์ธ 80~90%๋ Html์์ ์ฌ์ฉ๋๋ components๋ฅผ ๋ค์ด(Front-end)๋ฐ๋๋ฐ ์์๋๋ค. *๋จ, cache๋ ์ํ์ Google์ ์ ์ธ๋๋ค. Google์ ์ค์ง 6๊ฐ์ components๋ง ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ front-end์ ์์๋๋ ์๊ฐ์ด ๊ธธ์ง ์๋ค.
- 8. Front-end๋ฅผ 50% ์ค์ผ ๊ฒฝ์ฐ : ์ ์ฒด์ 40~45% ๊ฐ์๋ ๋ฒ์งธ, Front-end์์ ์์
ํ ๊ฒฝ์ฐ, Back-end์์ ์์
ํ ๋ ๋ณด๋ค๋ ์ ์ ์๊ฐ๊ณผ ๋ ์ ์ resource๊ฐ ํ์. ์ธ ๋ฒ์งธ, ์ฌ๋ฌ ํ๋ก์ ํธ ๊ฒฝํ์ ๋ฐํ์ผ๋ก, ๋ณดํต 25% or ๊ทธ ์ด์์ response time์ ์ค์ผ ์ ์๋ค.
- 10. Minimize HTTP Requests End-userresponse time์ 80%๋ฅผ front-end๋จ์์ ์ฐจ์งํ๋ค. ์ด response time์ ๋๋ถ๋ถ์ ํ์ด์ง๋ด์์ ์ฌ์ฉ๋์ด์ง๋ components -Images, Stylesheets, Scripts, Flash ๋ฑ- ๋ฅผ ๋ค์ด๋ก๋ ํ๋๋ฐ ์์๋๋ค. ์ฌ๊ธฐ์ component์ ์๋ฅผ ์ค์ด๋ ๊ฒ์ด HTTP request๋ฅผ ์ค์ด๋ ํ๋์๋ฐฉ๋ฒ์ด๋ฉฐ, ๋น ๋ฅธ ์น ํ์ด์ง ๋ง๋ค๊ธฐ์ ์ค์ ํฌ์ธํธ๋ผ๊ณ ํ ์ ์๋ค. Component์ ์๋ฅผ ์ค์ด๊ธฐ ์ํด ํ์ด์ง ์ค๊ณ๋ฅผ ๊ฐ๋จํ๊ฒ ํ ์๋ ์์ง๋ง ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๋ ๋ง์ ์์ contents๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด์ response time์ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ๊ณผ์ ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ฌ๊ธฐ์ HTTP request ์๋ฅผ ์ค์ด๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ์์๋ณด์.
- 11. Combined files HTTP request ์๋ฅผ ์ค์ด๊ธฐ ์ํด์์ฌ์ฉ๋์ด์ง ๋ชจ๋ Script๋ฅผ ํ๋์ Script๋ก ํตํฉํ๊ณ , ์ด์ ๊ฐ์ด CSS๋ ํ๋์ Stylesheet๋ก ํตํฉํ๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ๊ฐ ํ์ด์ง ๋ง๋ค ๋ค๋ฅด๊ฒ ์ฌ์ฉํด์ผ ํ ๋ ๋ฌธ์ ๊ฐ ๋ ์๋ ์๊ฒ ์ง๋ง ์์
์ ํ๋์ ๊ณผ์ ์ผ๋ก ํฌํจ์ํจ๋ค๋ฉด response time์ ์ค์ผ ์ ์์ ๊ฒ์ด๋ค. ex) <link rel="stylesheet" type="text/cssโ ref="http://i.kthimg.com/search/css/sch_layout.css"> <link rel="stylesheet" type="text/cssโ ref="http://i.kthimg.com/search/css/sch_result.css"> <link rel="stylesheet" ype="text/cssโ ref="http://i.kthimg.com/search/css/sch_prn.css"> <link rel="stylesheet" ype="text/cssโ ref="http://i.kthimg.com/search/css/sch_1.0.css">
- 12. CSS Sprites ํ์ด์ง ๋ด์ ์ฌ์ฉ๋ Background image์ request ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฐ์ด๋ ๋ฐฉ๋ฒ์ด๋ค. ์๊ณ ๊ฐ๋จํ๊ณ ๋ฐ๋ณต ๋์ด ์ง์ง ์๋ Background image๋ค์ ํ๋์ ์ด๋ฏธ์ง๋ก ํฉ์น๊ณ css์background-image์ background-position ์์ฑ์ผ๋ก ํ์ํ ๋ถ๋ถ๋ง ๋ณด์ฌ์ค๋ค. ex) .mre a{background:url(http://i.kthimg.com/search/img/bg_ic.gif) 0 1px no-repeat;}
- 13. Image Maps ์ฌ๋ฌ ๊ฐ์ ์ฐ์์ ์ธ ์ด๋ฏธ์ง์ ๋งํฌ๋ฅผ ๊ฑธ์ด์ผ ํ ๋ ์ฌ์ฉํ๋ค. ์ด๋ฏธ์ง์ ์ ์ฒด ์ฌ์ด์ฆ๋ ๊ฑฐ์ ๊ฐ์ง๋ง HTTP request๊ฐ ์ค์ด๋ค์ด ํ์ด์ง ๋ก๋ฉ ์๋๋ ๋นจ๋ผ์ง๋์ขํ ์ง์ ์ด ์ฝ์ง ์๊ณ ์๋ฌ๋ฅผ ์ ๋ฐํ๊ธฐ ์ฝ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง๋งต์์ ๊ทผ์ฑ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ navigation bar์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ex) Example 1 - No Image Map์ด๋ฏธ์ง๋งต์ ์ฌ์ฉํ์ง ์์์ ๋ Example 2 - Image Map์ด๋ฏธ์ง๋งต์ ์ฌ์ฉํ์ ๋
- 14. Inline image (data:URL scheme) data:URL scheme๋ฅผ ์ด์ฉํด์ ์ค์ ํ์ด์ง์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๋๋ค. ์ด๊ฒ์ HTML ๋ฌธ์์ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์ง๋ง HTTP request๋ฅผ ๊ฐ์์ํค๊ณ ํ์ด์ง ์ฌ์ด์ฆ ์ฆ๊ฐ๋ฅผ ๋ง์ ์ ์๋ค. data:[<mediatype>][;base64],<data> ๋จ, ์ด ๋ฐฉ๋ฒ์ ๊ธ์์ ์ ํ์ด ์๊ณ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋์ง ์๋๋ค. ex) <IMG BORDER=1 SRC="data:image/gif;base64, R0lGODdhMQAiAPcAAP////f39+/โฆโฆโฆ.">
- 16. Use a CDN ์ผ์ข
์ ์บ์ ์ญํ ์ ํ ์ ์๋๋ก ์ ์ฒด network ์์ ๋์ผํ contents ๋ด์ฉ์ ๋ณต์ ํ์ฌ, ๋๊ท๋ชจ ์ธํธ๋ผ๋ท ๋๋ ์ธํฐ๋ท์์ ๋ถ์ฐ์์ผ ๋์ ์์คํ
. ์ธํฐ๋ท ์ด์ฉ์์ ์ฆ๊ฐ์ ๋ฉํฐ๋ฏธ๋์ด ๋ฑ ๋์ฉ๋ contents์ ๋ํ ์์์ ์ฆ๊ฐ๋ก ์ธํด ๋ฐ์ดํฐ ํธ๋ํฝ์ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๋ ๋ฐ ๋นํด Middle-Mile์ด๋ผ ๋ถ๋ฆฌ๋ ๋คํธ์ํฌ๊ฐ ์ฐ๊ฒฐ๊ตฌ๊ฐ์ ๋ํ ํฌ์๋ ์ด์ ๋ฏธ์น์ง ๋ชปํด ๊ฒฐ๊ณผ์ ์ผ๋ก ์ธํฐ๋ท์ ํธ๋ํฝ์ ์ ์ฒดํ์, ์ฆ ๋ณ๋ชฉํ์์ด ๋ฐ์ํ๊ฒ ๋์๋ค. ์ด๋ฌํ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด Content Delivery Network์ด๋ค. CDN์ ๊ธฐ๊ฐ๋ง๊ณผ ๊ฐ์
์๋ง๊ฐ์ ์ฐ๊ฒฐ์ ๋ฌผ๋ฆฌ์ ์ธ ๋ง์ ์ฆ์ค์ ํตํด ๊ฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ๋ณ๋ชฉํ์์ ๋์์ธ ๋ฐ์ดํฐ ํธ๋ํฝ, ์ฆ Contents๋ฅผ ์ธํฐ๋ท ๋คํธ์ํฌ์ ์ฃผ์์ง์ ์ผ๋ก ๋ถ์ฐ์ํด์ผ๋ก์จ ํด๊ฒฐํ๋ ๊ฒ์ด๋ค. CDN์ ์ฌ์ฉ์์ ์ฝํ
์ธ ์๊ตฌ์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ ๋คํธ์ํฌ๋ฅผ ์ค๊ณํด ์ฃผ๊ณ contents๋ฅผ ์ ์กํด ์ค๋ค. Contents๊ฐ ๋ณต์ ๋์ด ํน์ ๊ตญ๊ฐ ๋๋ ์ ์ธ๊ณ์ ๊ฑธ์ณ ๋ถ์ฐ ๋ฐฐ์น๋๋ฉด, ์ฌ์ฉ์๋ค์ ๊ทธ๊ฒ์ด ํ๋์ ์น์ฌ์ดํธ์ ์์ ๋๋ณด๋ค ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ก์ธ์คํ ์ ์๊ฒ ๋๋ค. Akamai์ ๊ฐ์ contents ์ ๋ฌ ์กฐ์ง, ์ ๊ตญ์ ์ปค๋ฒํ ์ ์๋ ๋๊ท๋ชจ ISP, ๋๋ ๋๊ธฐ์
๋ฑ์ ์ํด ์ ๊ณต ๋๋ค
- 19. Add an Expires or a Cache-Control Header ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ํด Expires Date ์ Cache Control ์ถ๊ฐ
- 21. Gzip Components Gzip์ ๊ตญ์ ํ์ค์ผ๋ก ๋ฑ๋ก๋ ๋ฌด๋ฃ ์์ถ ํฌ๋งท์ด๋ค. ๋ธ๋ผ์ฐ์ ๋ ์์ ์ด ์์ถ์ ํด์ ํ ์ ์๋ ์์ถ ํฌ๋งท์ HTTP ํค๋ Accept-Encoding์ ์์ฑ์ ์ด์ฉํด์ ์ ๋ฌํ๋๋ฐ์ด ๋ ์๋ฒ๋ ์ด ์์ฑ์ ํ์ธํ์ฌ ๋ณธ๋ฌธ์ ์์ถํ ์ ์๋ค. (RFC1952) ์ด ๊ธฐ์ ์ ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ณ ์๊ณ ๊ทธ๋งํผ ์ฑ๋ฅ๋ ์ข๋ค. ์ด๋ฏธ์ง ๋ฑ ์ด๋ฏธ ์์ถ์ฒ๋ฆฌ๊ฐ ๋ ํ์ผ์๋ ํจ๊ณผ๊ฐ ์์ผ๋ฏ๋ก html, js, css๊ฐ์ ํ
์คํธ ํ์ผ์๋ง Gzip์ ์ ์ฉํ๋ค. ๋ํ ์ฉ๋์ด ์ ์ ํ์ผ์ ์์ถํ๋ฉด ์ ๋ฌ๋๋ ์๋๋ณด๋ค ์์ถ์ ์ ์ฉํ๊ณ ํธ๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆด ์ ์๊ณ ์์ถ ์ ์ฉ ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ CPU ๋ฆฌ์์ค๋ฅผ ๋ถํ์ํ๊ฒ ์๋นํ๊ฒ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์น IIS์๋ฒ๋Gzip์ด๋ deflate ์์ถ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ฒ๋ฆฌํ๋ค.
- 23. Put Stylesheets at the Top 1 / 2 Stylesheet๋ ํญ์ head์ ๋ฃ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ํ์ด์ง ๋๋๋ง์ด ๋ ๋นจ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋ก๋ฉ์๋๊ฐ ํฅ์ ๋๋ค. ์น ํ์ด์ง ๋ด์ฉ์ ์๊ด์์ด ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ก๋ฉ์ด ๋๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ๋ด์ฉ์ contents๋ฅผ ๊ฐ์ง ํ์ด์ง์ ๋๋ฆฐ ์ธํฐ๋ท์ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ ํนํ ์ค์ํ๋ค. ๋ฌธ์์ ์๋์ stylesheet๋ฅผ ๋ฃ๊ฒ ๋๋ฉด ์์๋ฅผ ๋ค ๋ถ๋ฌ์จ ํ์ ๋ค์ ์์์๋ถํฐ style์ ์
ํ๊ฒ ๋๋ค. ๊ทธ ๊ณผ์ ์์ IE๋ฑ์ ๋ธ๋ผ์ฐ์ ์์๋ ๋ง์ง๋ง style์ด ๋ก๋ฉ ๋ ๋๊น์ง ๋๋๋ง์ ๋ฉ์ถ๊ณ ์๋ค๊ฐ style์ด ๋ก๋ ๋ ํ ๋๋๋ง์ ํ๋ค. ์ด ๊ณผ์ ์์ ์ฌ์ฉ์๋ค์ ์๋ฌด๊ฒ๋ ์๋ํฐ ํ์ด์ง๋ฅผ ๋ณด๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. html ํ์ค์์๋ stylesheet๋ฅผ ํ์ด์ง์ head์ ๋ฃ๊ธฐ๋ฅผ ๊ถ์ฅํ๊ณ ์๋ค.
- 25. Move Scripts to the Bottom 1 / 2 ์คํฌ๋ฆฝํธ ์คํ์ ์ง์ฐ์ด ๊ฑธ๋ ค ํ์ด์ง๊ฐ ๋ฆ๊ฒ ์คํ ๋๋ ๊ฑธ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋จ์ ๋์ด์ผ ํ๋ค.
- 27. Avoid CSS Expression 1 / 2 CSS expression์ ๋ค์ด๋๋ฏนํ css์์ฑ์ ์ง์ํ๋ ๊ฒ์ผ๋ก ๊ฐ๋ ฅํ์ง๋ง ์ํํ ๋ฐฉ๋ฒ์ด๋ค. ์๋ฅผ ๋ค์ด CSS expression์ ์ฌ์ฉํ์ฌ background color๋ฅผ ๋งค ์๊ฐ ๋ณ๋ก ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ๋ณด์ฌ์ง๊ฒ ์ค์ ํ ์ ์๋ค. background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" ); ์ฌ๊ธฐ์ ๋ณด๋ค์ํผ, expression method๋ก JavaScript expression์ ์ ๊ทผํ ์ ์๋ค. CSS ์์ฑ์ JavaScript expression์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ก ์ค์ ๋๋ค. Expression method๋ IE -IE5๋ถํฐ ์ง์๋๋ค- ์ธ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ ์๋์ด ์๋๋ฏ๋ก IE์์ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ผ๊ด๋ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์ด expression์ ๋ฌธ์ ๋ ์์๋ณด๋ค ํจ์ฌ ์์ฃผ ์คํ๋๋ค๋ ๋ฐ ์๋ค. ํ์ด์ง๊ฐ rendering ๋๊ณ resize ๋ ๋์๋ง ์คํ๋๋ ๊ฒ์ด ์๋๋ผ ์คํฌ๋กค์ ์์ง์ผ ๋๋ ํ์ด์ง ์์์ ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋์๋ ์คํ ๋๋ค.
- 28. Avoid CSS Expression 1 / 2 Expression ์นด์ดํฐ http://stevesouders.com/hpws/expression-counter.php (CSS Expression์ด ๋์ ํ ๋๋ง๋ค ์นด์ดํธ ๊ณ์ฐ) ๊ทธ ๋ฐฉ๋ฒ์ ํด๊ฒฐ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋๋ expression์ด ํ๋ฒ๋ง ์คํ๋๊ฒ ์ ํํ๋ ๊ฒ์ด๋ค. ๋ง์ฝ ์ ๋์ ์ธ ํ์ด์ง์ expresstion์ ์ค์ผ ํ๋ค๋ฉด event handler๋ก ๋์ฒดํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค. CSS expresstion์ ์ฌ์ฉํด์ผ ํ ๋์๋ ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ถฉ๋ถํ ์๊ฐํ ํ์ ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ ์ฉํ๋๋ก ํ๋ค.
- 30. Make JS and CSS external 1 / 2 JavaScript์ CSS๋ฅผ ์ธ๋ถ ํ์ผ๋ก ๋ถ๋ฌ์ค๊ฒ ๋๋ฉด browser์ ์ํด ์บ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋น ๋ฅด๊ฒ ํ์ด์ง๋ฅผ ์ถ๋ ฅํ๋ค. HTML ๋ฌธ์์ inline ํ์์ผ๋ก ์กด์ฌํ๋ JavaScript์ CSS๋ HTML ๋ฌธ์๊ฐ ์์ฒญ๋ ๋๋ง๋ค ๋งค๋ฒ ๋ค์ด๋ก๋ ํ๋๋ฐ ๊ทธ๋ ๊ฒ ๋๋ฉด HTTP request ์๋ ๊ฐ์ํ ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง HTML ๋ฌธ์์ ํฌ๊ธฐ๋ ๋์ด๋๊ฒ ๋๋ค. ๋ฐ๋ฉด์, JavaScript์ CSS๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ํด ์ธ๋ถ ํ์ผ๋ก ์บ์ฑ์ด ๋๋ค๋ฉด HTML ๋ฌธ์์ ํฌ๊ธฐ๋ request ์๋ฅผ ์ฆ๊ฐ์ํค์ง ์์ผ๋ฉด์ ๊ฐ์ํ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ HTML ๋ฌธ์์ ์์ ์ธ๋ถ JavaScript, CSS์ ์์ฒญ ๋น๋์ด๋ค. ์ด๋ ์น์ฌ์ดํธ์์ ์ฌ์ฉ์๋ค์ด ์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ๊ทธ ํ์ด์ง๋ค์ด ๋์ผํ JavaScript์ CSS๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ธ๋ถ ํ์ผ๋ก ์บ์ฑ ๋๊ฒ ํ๋ ๊ฒ์ด ์ข๋ค. ๋ง์ฝ ํ์ด์ง ๋ทฐ๊ฐ ์ ๊ฑฐ๋ ํ์ ๋ ๊ณณ์๋ง ์ ์ฉ์ด ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด JavaScript๋ CSS๋ฅผ inlineํํ๋ ๊ฒ์ด ์๋ต ์๋๊ฐ ๋ ๋น ๋ฅด๋ค.
- 31. Make JS and CSS external 1 / 2 ๋ง์ ํ์ด์ง๋ก ์ฐ๊ฒฐ๋๋ front page ๊ฐ์ ๊ฒฝ์ฐ๋ ์ธ๋ถํ์ผ ์บ์ฑ ์ด๋ผ๋ ์ฅ์ ๊ณผ inline์ HTTP request ๊ฐ์๋ฅผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. Front page์์ ์ฌ์ฉํ JavaScript์ CSS๋ inline์ผ๋ก ๋ฃ์ด ๋๊ณ ํ์ด์ง๊ฐ ๋ก๋ฉ์ ๋ง์น ํ์ ๋์ ์ผ๋ก ์ธ๋ถ ํ์ผ์ ๋ค์ด๋ก๋ ํ๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ ํ์ ํ์ด์ง๋ค์ ์บ์ฑ ๋์ด ์๋ ์ธ๋ถ ํ์ผ์ ์ฐธ์กฐํ๊ฒ ๋์ด ๋ก๋ฉ ์๋๊ฐ ๋นจ๋ผ์ง ๊ฒ์ด๋ค.
- 33. Reduce DNS Lookups 1 / 2 ์ผ๋ฐ์ ์ผ๋ก ํด๋น ํธ์คํธ์ ๋ํ IP ์ฃผ์๋ฅผ ์กฐํํ๋ ค๋ฉด DNS์ 20-120 micro sec ์ ๋ ๊ฑธ๋ฆฌ๋ฏ๋ก Image/JS/CSS ๋งํฌ์ Domain ์๋ฅผ ์ต์ํํด์ผ ํ๋ค.
- 35. Minify JavaScript and CSS 1 / 2 JavaScript์ CSS์ ์ต์ํ๋ ๋ชจ๋ ์ฃผ์์ ์ ๊ฑฐํ๊ณ ๋ถํ์ํ ๊ณต๋ฐฑ(space, newline, and tab)์ ์ ๊ฑฐ ํจ์ผ๋ก์จ ์ฝ๋์ ์ฌ์ด์ฆ๋ฅผ ์ค์ฌ ๋ก๋ฉ ์๋๊ฐ ๋นจ๋ผ์ง๊ฒ ํ๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด JavaScript์ ๊ฒฝ์ฐ ๋ค์ด๋ก๋ ๋๋ ํ์ผ์ ์ฌ์ด์ฆ๊ฐ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ํฅ์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ต์ํ ํด์ฃผ๋ ํด ์ค ์ ์๋ ค์ง ํ๋ก๊ทธ๋จ์๋ JSMin์ YUI Compressor๊ฐ ์๋๋ฐ, ๊ทธ ์ค YUI compressor๋ก๋ CSS ํ์ผ๋ ์ต์ํ ํ ์ ์๋ค. Obfuscation(๋๋
ํ,์ํธ์)๋ ์ฝ๋ ์์ถ์ ์ต์ ํ ๋ ๋์ฒด ๊ธฐ์ ๋ก์จ ์์ค ์ฝ๋ ์ค์์ ๊ฐ์ฅ ์ค์ํ ๋ฉค๋ฒ๋ ๋ฉ์๋์ ์ด๋ฆ์ ์งง๊ณ ๋ฌด์๋ฏธํ ๊ฒ์ผ๋ก ๋์ฒดํด ๋ค๋ฅธ ์ฌ๋์ด ๋์ฉํ๊ฑฐ๋ ๊ฐ์ ธ๋ค ์ฐ๋๊ฑธ ๋ง์์ค๋ค. ๋ฏธ๊ตญ Top10 ์น์ฌ์ดํธ ์กฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์ต์ํ ํ ํ์ผ์ ํฌ๊ธฐ๊ฐ 21% ๊ฐ์ํ๊ฒ์ ๋นํด Obfuscation ํ ํ์ผ์ 25%๊ฐ ๊ฐ์ํ์ฌ ๋ณด๋ค ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๊ณ ์๋ค. ๊ทธ๋ฌ๋ ๋ฐฉ๋ฒ์ด ํจ์ฌ ๋ณต์กํ๊ณ ์์ถ๋์ค ์คํฌ๋ฆฝํธ ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ์ํ์ด ์์ผ๋ฉฐ ์ฌ์ค์ ์๋ต์๋์ ๋ณ ์ํฅ์ ๋ฏธ์น์ง ๋ชปํ๋ฏ๋ก ๋จ์ํ ์ต์ํ ์ํค๋ ๊ฒ์ด ๋ ํจ๊ณผ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ex) varpserson; -> var AB
- 36. Minify JavaScript and CSS 1 / 2 ์ธ๋ถ Script์ CSSํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก inline์ผ๋ก ๋ค์ด๊ฐ ์๋ Script์ CSS๋ ์ต์ํ๊ฐ ๊ฐ๋ฅํ๋ค. Gzip (์น ์๋ฒ์์ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ๋ก ๊ฐ ๋๋ง htmlํ์ผ์ ์์ถํด์ฃผ๋ ์๋ฒ๋ชจ๋)์ ํตํด์ ์์ถํ ํ๋ผ๋ Script์ CSS๋ฅผ ์ต์ํ๋ฅผ ํ๊ฒ ๋๋ฉด ์ ์ด๋ 5%์ด์ ์ฌ์ด์ฆ๋ฅผ ๋ ๊ฐ์ ์ํฌ ์ ์๋ค.
- 38. Avoid Redirects 1 / 2 Redirect ๋์์๋ ๋ค๋ฅธ ์์
์ ์์ํ ์ ์๋ค http://www.paran.com/test ( 301 redirect ๋จ) http://www.paran.com/test/ ๋๋ ํ ๋ฆฌ์ผ๊ฒฝ์ฐ/ ๊น์ง ๊ธฐ์
- 40. Remove Duplicates Scripts 1 / 2 request ๋ฅผ ์ค์ด๊ธฐ ์ํด ๊ฐ๋ฐ์์ ์ค์๋ก ์ธํ ์ค๋ณต ๊ธฐ์ ๋ ์คํฌ๋ฆฝํธ ์ค์ธ๋ค. ์ค์ ๊ฐ์ external js๋ฅผ ์ฌ๋ฌ๋ฒ ํธ์ถํ๋ฉด ํธ์ถํ ๋งํผ request ๋๋ค.
- 42. Configure ETag Compare 1 / 2 ์น์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์บ์ ๋ ๊ตฌ์ฑ์์๋ค์ ์ ํจ์ฑ์ ํ์ธํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๋ฉ์ปค๋์ฆ. ๋ธ๋ผ์ฐ์ ์ ์บ์๋ ํ์ผ์ ์ ํจํ๋ฉด [304 Not Modified] ๋ฐ์์ํจ๋ค. ์ ํจํ์ง ์์ผ๋ฉด ์๋ฒ์์ ํ์ผ์ ๋ฐ์ [200 OK] ๋ฐ์ํ๋ค. HTTP Request Server Browser Disk Read Cache Download 200 OK 304 Not Modified Last-Modified ETag
- 43. Configure ETag 1 / 2 GET /i/yahoo.gif HTTP/1.1 Host: us.yimg.com -------------------------------------------------------> HTTP/1.1 200 OK Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT ETag: "10c24bc-4ab-457e1c1f" Content-Length: 12195 -------------------------------------------------------> GET /i/yahoo.gif HTTP/1.1 Host: us.yimg.com If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT If-None-Match: "10c24bc-4ab-457e1c1f" -------------------------------------------------------> HTTP/1.1 304 Not Modified Request Response Request Response
- 44. Configure ETag 1 / 2 ์ถ์ฒ http://support.microsoft.com/kb/922703/ http://www.apacheweek.com/issues/02-01-18 http://firejune.com/1151
- 48. Flush the Buffer Early 1 / 2 ๋ฒํผ๋ง์ ์ฌ์ฉํจ์ผ๋ก์จ ์๋ฃ๋ html ์ด ์๋ ์ฌ์ฉ์๊ฐ ์ํ๋์์ ์ ์ถ๋ ฅ์ ์ง์ ํ ์ ์์ผ๋ฏ๋ก ๋ธ๋ผ์ฐ์ ์ ๋๊ธฐ ์๊ฐ์ด ์ค์ด๋ ๋ค.
- 50. Use Get for Ajax Requests 1 / 2 Ajax ์ฌ์ฉํ ๋๋GET Method ๊ฐ ๋น ๋ฅด๋ค. POST ๋ XMLHttpRequest์ฌ์ฉ์ header ๋ฅผ ๋ณด๋ธ ํ data ๋ฅผ ๋ณด๋ด๋ ๋ ๊ฐ์ง step ์ผ๋ก ๋์ด์์ด์ GET ๋ณด๋ค ๋๋ฆฌ๋ค.
- 52. Post-load Components, Preload Components 1 / 2 ํ์ด์ง๊ฐ ์ด๋ฆด ๋ ํ์ํ ๊ตฌ์ฑ์์์ onloadํ์ ํ์ํ ๊ตฌ์ฑ์์๋ฅผ ๊ตฌ๋ถํ์ฌ ํ์ด์ง ๋ ๋๋ง์ ๋น ๋ฅด๊ฒ ๊ตฌํํ๊ธฐ ์ํด ๊ตฌ์กฐํ ์์
์ด ํ์.
- 54. Reduce the Number of DOM Elements 1 / 2 Dom ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ตํ๊ฒ ํด์ผ ํ๋ค.
- 56. Split Components Across Domains 1 / 2 webํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ์์๋ค์ ํธ์คํธ๋ฅผ ๋ถ์ฐํ๋ฉด ๋นจ๋ผ์ง ์ ์๋ค. ex) css/js/img
- 58. Minimize the Number of Iframes 1 / 2 Iframe์ html ๋ฌธ์๋ฅผ ๋ค๋ฅธ html๋ฌธ์์ ์ฝ์
ํ๋ ๊ธฐ๋ฅ์ด๋ค. Iframe์ ๊ด๊ณ ๋ ๋ฐฐ๋๋ฑ ์ธ๋ถ ์ปจํ
์ธ ๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋, doc type๋ฑ์ด ๋ค๋ฅธ html ๋ฌธ์๋ฅผ ํ ํ๋ฉด์์ ๋ณด์ฌ์ค์ผ ํ ๋ ์ ์ฉํ๋ค. ๊ทธ๋ฌ๋ ์๋ฌด ๋ด์ฉ์ด ์์ด๋ ํธ๋ํฝ์ด ๋ฐ์ํ๊ณ request๊ฐ ์ฆ๊ฐํ๊ฒ ๋๋ฏ๋ก ๊ผญ ํ์ํ ๋๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. iframe์์ css/js๋ฑ์ด parent ์ ๊ฐ์ด ์์ด๋ ๋ค์ request ๋จ์ผ๋ก ์ฃผ์ํด์ผ ํ๋ค.
- 60. No 404s 1 / 2 ๋ถํ์ํ 404 not found ํ์ด์ง๋ฅผ ์ ๊ฑฐํ๋ค.
- 62. Reduce Cookie Size 1 / 2 ๋ถํ์ํ ์ฟ ํค๋ฅผ ์ ๊ฑฐ. ํด๋น ๋๋ฉ์ธ์ Expire ๋ ์ง ์ง์
- 65. Minimize Dom Access 1 / 2 Javascript๋ก Dom์์์ ์ ๊ทผํ๋ ๊ฒ์ ํ์ด์ง ์๋ต์๋๋ฅผ ๋๋ฆฌ๊ฒ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก Dom Element ๊ตฌ์กฐ๋ฅผ Cache ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์ ๊ทผ ํ ๋๋ง๋ค Dom syntax ๋ก ์ฐ์ง ๋ง๊ณ ๋ณ์์ ํ ๋นํด์ ์ฐ๋๋ก ํ๋ค.
- 67. Develop Smart Event Handlers 1 / 2 ๊ฐ๊ฐ์ Dom element ์ ์ด๋ฒคํธ๋ฅผ ๊ฑฐ๋๊ฒ ๋ณด๋ค๋ ์์ Element ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด ํ๋์ ์ด๋ฒคํธ๋ก ์ฒ๋ฆฌํ๊ณ ํ์ element ์์ฑ์ผ๋ก ์ฒ๋ฆฌ ํ๋ ๊ฒ ์ข๋ค.
- 69. Choose <link> over @import 1 / 2 <link>๋ ํ์ ๋ธ๋ผ์ฐ์ ๊น์ง ๋ชจ๋ ์ง์๋๊ณ @import๋ ์ต์ ๋ธ๋ผ์ฐ์ ๋ง ์ง์ํ๊ธฐ๋๋ฌธ์ ๊ตฌ ๋ฒ์ ์ CSS ๋ฒ๊ทธ๋ฅผ ํผํ๊ธฐ ์ํด์ @import๋ฅผ ์ฐ๊ธฐ๋ ํ๋ค. ํ์ง๋ง @import๋ฅผ ์ฐ๋ฉด <link>๋ฅผ bottom์ ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ๋ํ @import๋ ์ด๋ฏธ์ง๋ณด๋ค CSS๋ฅผ ๋ฆ๊ฒ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ์๋ ํฅ์์ ์ข์ง ์์ ์ํฅ์ ๋ผ์น๋ค. ๋ ์์ธํ ๋ด์ฉ http://seye2.egloos.com/2319809
- 71. Avoid Filters 1 / 2 IE ์ ์ฉ filter์ธ AlphaImageLoader๋ ie7 ์ดํ ๋ฒ์ ์์ png๋ฐํฌ๋ช
์ด๋ฏธ์ง๋ฅผ ์ธ ์ ์๋๋ก ํด์ค๋ค. ๊ทธ๋ฌ๋ ์ด filter๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋๋ง ๋๋ ๋์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ํ๋ ๋์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฉ์ถ๊ฒ ๋๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฆ๊ฐ์ํค๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ๋จ์ ์ด ์๋ค. ๊ฐ์ฅ ์ข์ ์ ๊ทผ ๋ฐฉ๋ฒ์ AlphaImageLoader๋ฅผ ์ง์ํ๊ณ ์ข ์ง์ด ๋จ์ด์ง๋๋ผ๋ png8๋ก ์ง์ํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ์ง๋ง ๋ง์ฝ AlphaImageLoader๋ฅผ ์ ๋ง ์ฌ์ฉํด์ผ ํ๋ค๋ฉด ie6 ์ ์ฉ ํต์ธ โ_โ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ์๋ค์๊ฒ ํผํด๊ฐ ๊ฐ์ง ์๊ฒ ํ๋ค. ex) div {_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=โtest.png', sizingMethod='image');}
- 73. Optimize Images 1 / 2 ์น์ฌ์ดํธ์ ๋ฃ์ ์ด๋ฏธ์ง๋ฅผ ์น ์๋ฒ๋ก ์ฌ๋ฆฌ๊ธฐ ์ ์ ์ด๋ฏธ์ง๋ฅผ ์ต์ ํ ์์ผ์ฃผ๋๋ก ํ๋ค. ๋จผ์ Imagemagick์ ์ด์ฉํ์ฌ gif ์ด๋ฏธ์ง๋ฅผ ์ปฌ๋ฌ ์์ ๋ง๊ฒ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํด ์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ gif ํ์ผ์ pngํ์ผ๋ก ๋ณํํ์ฌ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ์ด๋ ๊ฒ ๋๋ฉด ๋ณดํต์ ์ฌ์ด์ฆ๊ฐ ์ค์ด๋ ๋ค. ๊ฐ๋ฐ์๋ค์ ๋ณดํต ๋ธ๋ผ์ฐ์ ์ ์ ํ ๋๋ฌธ์ png์ฌ์ฉ์ ๊บผ๋ คํ์ง๋ง ์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด ํจ์ฌ ๋นจ๋ผ์ง๋ค. ํ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ค๋ฉด true color png์ด๋ฏธ์ง์ alpha-transparency ์ง์ ๋ฌธ์ ์ธ๋ฐ gif์ด๋ฏธ์ง๋ ์ฌ์ค true color๊ฐ ์๋๋ฉฐ ๊ทธ ์ด๋ค ๋ค์ํ ํฌ๋ช
์ด๋ฏธ์ง๋ ์ง์ํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก gif animation์ด ์๋ ์ด์์ PNG-8๋ก ์ ์ฅํ์ฌ ์ต์ ํ ์ํค๋ ๊ฒ์ด ์ข๋ค. ๊ทธ ์ธ์๋pngcrush(PNG optimizer tool), jpegtran ๋ฑ์ ์ด์ฉํ์ฌ ์ต์ ํ ํ ์ ์๋ค.
- 75. Optimize CSS Sprites 1 / 2 Image Sprites ๊ธฐ๋ฒ์ ์ธ ๋ background image๋ฅผ ์์ง์ผ๋ก ๋์ดํ์ง ์๊ณ ์ํ์ผ๋ก ๋์ดํ๋ฉด ํ์ผ ์ฌ์ด์ฆ๋ฅผ ์ค์ผ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ทํ ์์์ image๋ฅผ ์กฐํฉํ๋ฉด ์ปฌ๋ฌ ์๊ฐ ์ค์ด 256 ์์ ๋ฏธ๋ง์ PNG8 ํ์ผ๋ก ๋ง๋ค๊ธฐ์ ์ข๋ค. ๋ชจ๋ฐ์ผ ์ ์๋น์ค ๋ ๊ฒ๋ ๊ณ ๋ คํด์ผ ํ๋ฉฐ ๊ฐ ์ด๋ฏธ์ง ์ฌ์ด์ ํฐ ์ฌ๋ฐฑ์ ๋จ๊ธฐ์ง ์๋๋ก ํ๋ค. ์ฌ๋ฐฑ์ด ํ์ผ ์ฉ๋์ ํฌ๊ฒ ์ํฅ์ ๋ฏธ์น์ง๋ ์์ง๋ง ์ฌ์ฉ์๋ค์ด ์ด๋ฏธ์ง๋ฅผ ํฝ์
๋งต์ผ๋ก ์์ถ ํธ๋๋ฐ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ง์ ํ์๋ก ํ๊ฒ ๋ฉ๋๋ค. 100x100 ์ด๋ฏธ์ง๋ 10000๊ฐ ํฝ์
,
- 77. Donโt Scale Image in HTML 1 / 2 Image์ ์ง์ ๋ width, height์ ๊ฐ์ ํฌ๊ธฐ์ image๋ฅผ ์ฌ์ฉํ๋ค. ๋ง์ฝ <img width="100" height="100" src="mycat.jpg" alt="My Cat" />๊ฐ ํ์ํ๋ค๋ฉด 500x500px๋ฅผ ๊ฐ์ ๋ก ์ค์ฌ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค 100x100px์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- 79. Make favicon.ico Small and Cacheable 1 / 2 favicon.ico(short for favorites icon)์ ์๋ฒ ๋ฃจํธ์ ์๋ ์ด๋ฏธ์ง ์ด๋ค. IE์์๋ Onload์ ๋ค๋ฅธ component๋ฅผ ์์ฒญํ ๋ ๋จผ์ ๋ก๋ฉ๋จ์ผ๋ก์จ ํด๋น component ๋ก๋ฉ ์ ๋ฐฉํด๊ฐ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก favicon.ico๋ฅผ ๋ง๋ค ๋๋ 1K๋ก ์ดํ๋ก ์๊ฒ ๋ง๋ค๊ณ , Expires header๋ฅผ ์ค์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- 81. Keep Components under 25K 1 / 2 iPhone์์ 25K๋ณด๋ค ํฐ ํฌ๊ธฐ์ component๋ฅผ cacheํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์๊ธด ์ ํ์ด๋ค. ์์ถ์ ์ ์ฉ๋์ด๋ฉฐ Gzip์ผ๋ก๋ ์ถฉ๋ถ์น ์์ถ์ด ๋์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์์ฒ์๋ถํฐ ์ด๋ฏธ์ง 25K๊ฐ ๋์ง ์๋๋ก ์ ์ ํ๋ ๊ฒ์ด ์ข๋ค. ๋ ์์ธํ ๋ด์ฉ์ด ์๊ณ ์ถ๋ค๋ฉด Wayne Shea & TenniTheurer์ "Performance Research, Part 5: iPhoneCacheability - Making it Stickโ๋ฅผ ์ฐธ์กฐ ํ ๊ฒ.
- 83. Pack Components into a Multipart Document 1 / 2 Email์ ์ฒจ๋ถํ์ผ๊ณผ ๊ฐ์ด multipart(Content-Type ์ค ํ๋๋ก ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ๋ ์น์
์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ฉ์์ง๋ก ์กฐํฉํ์ฌ ์ ์ก) ๋ฌธ์๋ก component๋ค์ ๋ฌถ๋ ๊ฒ์ด ์ฌ๋ฌ ๊ฐ์ component๋ฅผ ํ๋์ HTTP request๋ก ์ ์กํ๋๋ฐ ๋์์ ์ค๋ค. ์ด ๊ธฐ์ ์ ์ฌ์ฉํ ๋๋ ๋จผ์ ์ฌ์ฉ์ agent๊ฐ ์ด ๊ธฐ์ ์ ์ง์ํ๋ ์ง๋ฅผ ํ์ธ ํ๋๋ก ํ๋ค. (iPhone์ ์ง์ํ์ง ์๋๋ค.)
- 84. Reference 1 / 2 ์๋ฌธ http://developer.yahoo.com/performance/rules.html ์ฐธ๊ณ ๋ฌธ์ http://static.slideshare.net/swf/ssplayer2.swf?doc=high-performance-web-pages-20-new-best-practices-120577522992998-3