SlideShare una empresa de Scribd logo
1 de 83
Best Practices for Speeding Up Your Web Site  ๋””์ž์ธ์‹คUI Dev ์ด์„ ์‹ค, ๊น€์ˆ˜์„ฑ
The important of Front-end Performance
Downloading (http://www.yahoo.com) in IE : empty cache Back-end =5% Front-end = 95%
Downloading (http://www.yahoo.com) in IE : primed cache Even here, front-end= 95%
Downloading percentage * Percentage of time spent downloading the HTML document for 10 top web site
Downloading percentage ๋ณดํ†ต ์›น์‚ฌ์ดํŠธ์—์„œ Html ๋ฌธ์„œ๋ฅผ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‹ค์šด(Back-end) ๋ฐ›๋Š”๋ฐ  ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์€ 10~20%์ด๋‹ค. ๊ทธ ์™ธ 80~90%๋Š” Html์—์„œ ์‚ฌ์šฉ๋˜๋Š” components๋ฅผ ๋‹ค์šด(Front-end)๋ฐ›๋Š”๋ฐ ์†Œ์š”๋œ๋‹ค. *๋‹จ, cache๋œ ์ƒํƒœ์˜ Google์€ ์ œ์™ธ๋œ๋‹ค.   Google์€ ์˜ค์ง 6๊ฐœ์˜ components๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— front-end์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์ง€ ์•Š๋‹ค.
How can response time be reduced? ์ฒซ ๋ฒˆ์งธ, Front-end์— Focus ํ•˜๋ฉด response time์„ ์ค„์ด๋Š”๋ฐ ๋”์šฑ ํšจ๊ณผ์  ,[object Object]
Front-end๋ฅผ 50% ์ค„์ผ ๊ฒฝ์šฐ : ์ „์ฒด์˜ 40~45% ๊ฐ์†Œ๋‘ ๋ฒˆ์งธ, Front-end์—์„œ ์ž‘์—…ํ•  ๊ฒฝ์šฐ, Back-end์—์„œ ์ž‘์—…ํ•  ๋•Œ ๋ณด๋‹ค๋” ์ ์€ ์‹œ๊ฐ„๊ณผ ๋” ์ ์€ resource๊ฐ€  ํ•„์š”. ์„ธ ๋ฒˆ์งธ, ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ, ๋ณดํ†ต 25% or ๊ทธ ์ด์ƒ์˜ response time์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
Rule 1. Make Fewer HTTP Requests
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 ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.
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">
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;}
Image Maps ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—ฐ์†์ ์ธ ์ด๋ฏธ์ง€์— ๋งํฌ๋ฅผ ๊ฑธ์–ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฏธ์ง€์˜ ์ „์ฒด ์‚ฌ์ด์ฆˆ๋Š” ๊ฑฐ์˜ ๊ฐ™์ง€๋งŒ HTTP request๊ฐ€ ์ค„์–ด๋“ค์–ด ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๋Š” ๋นจ๋ผ์ง€๋‚˜์ขŒํ‘œ ์ง€์ •์ด  ์‰ฝ์ง€ ์•Š๊ณ  ์—๋Ÿฌ๋ฅผ ์œ ๋ฐœํ•˜๊ธฐ ์‰ฝ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ์ง€๋งต์€์ ‘๊ทผ์„ฑ์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— navigation bar์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ex) Example 1 - No Image Map์ด๋ฏธ์ง€๋งต์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ  Example 2 - Image Map์ด๋ฏธ์ง€๋งต์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ
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+/โ€ฆโ€ฆโ€ฆ.">
Rule 2. Use a CDN(Content Delivery Network)
Use a CDN ์ผ์ข…์˜ ์บ์‹œ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ „์ฒด network ์ƒ์— ๋™์ผํ•œ contents ๋‚ด์šฉ์„ ๋ณต์ œํ•˜์—ฌ, ๋Œ€๊ทœ๋ชจ ์ธํŠธ๋ผ๋„ท  ๋˜๋Š” ์ธํ„ฐ๋„ท์ƒ์— ๋ถ„์‚ฐ์‹œ์ผœ ๋†“์€ ์‹œ์Šคํ…œ. ์ธํ„ฐ๋„ท ์ด์šฉ์ž์˜ ์ฆ๊ฐ€์™€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋“ฑ ๋Œ€์šฉ๋Ÿ‰ contents์— ๋Œ€ํ•œ ์ˆ˜์š”์˜ ์ฆ๊ฐ€๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์€  ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๋ฐ ๋น„ํ•ด Middle-Mile์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ๊ฐ„ ์—ฐ๊ฒฐ๊ตฌ๊ฐ„์— ๋Œ€ํ•œ ํˆฌ์ž๋Š” ์ด์— ๋ฏธ์น˜์ง€  ๋ชปํ•ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ธํ„ฐ๋„ท์€ ํŠธ๋ž˜ํ”ฝ์˜ ์ •์ฒดํ˜„์ƒ, ์ฆ‰ ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด Content Delivery Network์ด๋‹ค. CDN์€ ๊ธฐ๊ฐ„๋ง๊ณผ ๊ฐ€์ž…์ž๋ง๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๋ฌผ๋ฆฌ์ ์ธ ๋ง์˜ ์ฆ์„ค์„ ํ†ตํ•ด ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ‘๋ชฉํ˜„์ƒ์˜ ๋Œ€์ƒ์ธ  ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ, ์ฆ‰ Contents๋ฅผ ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ์˜ ์ฃผ์š”์ง€์ ์œผ๋กœ ๋ถ„์‚ฐ์‹œํ‚ด์œผ๋กœ์จ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. CDN์€ ์‚ฌ์šฉ์ž์˜ ์ฝ˜ํ…์ธ  ์š”๊ตฌ์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ค‘๊ณ„ํ•ด ์ฃผ๊ณ  contents๋ฅผ ์ „์†กํ•ด ์ค€๋‹ค. Contents๊ฐ€ ๋ณต์ œ๋˜์–ด ํŠน์ • ๊ตญ๊ฐ€ ๋˜๋Š” ์ „์„ธ๊ณ„์— ๊ฑธ์ณ ๋ถ„์‚ฐ ๋ฐฐ์น˜๋˜๋ฉด, ์‚ฌ์šฉ์ž๋“ค์€ ๊ทธ๊ฒƒ์ด ํ•˜๋‚˜์˜ ์›น์‚ฌ์ดํŠธ์—  ์žˆ์„ ๋•Œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋น ๋ฅด๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. Akamai์™€ ๊ฐ™์€ contents ์ „๋‹ฌ ์กฐ์ง, ์ „๊ตญ์˜ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๊ทœ๋ชจ ISP, ๋˜๋Š” ๋Œ€๊ธฐ์—… ๋“ฑ์— ์˜ํ•ด ์ œ๊ณต ๋œ๋‹ค
Use a CDN ,[object Object],๋ถ„์‚ฐ ๋…ธ๋“œ์™€GLB๋ฅผ ํ†ตํ•œ ์ตœ์ ์˜ ์ „์†ก๊ฒฝ๋กœ ์ œ๊ณต ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์ „์†ก์†๋„ ๋ณด์žฅ    ,[object Object],ํŠธ๋ž˜ํ”ฝ ํญ์ฃผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐฉ์ง€ ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์ฝ˜ํ…์ธ ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†ก   ,[object Object],์‚ฌ์šฉ๋Ÿ‰์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ ์ข…๋Ÿ‰์ œ ์š”๊ธˆ์ฒด๊ณ„ ์ดˆ๊ธฐ ์ธํ”„๋ผ ํˆฌ์ž๋น„์šฉ ๋ฐ IT ์šด์˜๋น„์šฉ ์ ˆ๊ฐ    ,[object Object],์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€ ํ•ด๊ฒฐ  ์ „์„ธ๊ณ„ 40๊ฐœ Server Farm, 300Gbps์˜ ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผํ™œ์šฉ (2007๋…„ 9์›” ๊ธฐ์ค€)
Rule 3. Add an Expires or a Cache-Control Header
Add an Expires or a Cache-Control Header  ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์œ„ํ•ด Expires Date ์™€ Cache Control ์ถ”๊ฐ€
Rule 4. Gzip Components
Gzip Components Gzip์€ ๊ตญ์ œ ํ‘œ์ค€์œผ๋กœ ๋“ฑ๋ก๋œ ๋ฌด๋ฃŒ ์••์ถ• ํฌ๋งท์ด๋‹ค.  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž์‹ ์ด ์••์ถ•์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š” ์••์ถ• ํฌ๋งท์„ HTTP ํ—ค๋” Accept-Encoding์˜ ์†์„ฑ์„ ์ด์šฉํ•ด์„œ  ์ „๋‹ฌํ•˜๋Š”๋ฐ์ด ๋•Œ ์„œ๋ฒ„๋Š” ์ด ์†์„ฑ์„ ํ™•์ธํ•˜์—ฌ ๋ณธ๋ฌธ์„ ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.  (RFC1952) ์ด ๊ธฐ์ˆ ์€ ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๊ทธ๋งŒํผ ์„ฑ๋Šฅ๋„ ์ข‹๋‹ค. ์ด๋ฏธ์ง€ ๋“ฑ ์ด๋ฏธ ์••์ถ•์ฒ˜๋ฆฌ๊ฐ€ ๋œ ํŒŒ์ผ์—๋Š” ํšจ๊ณผ๊ฐ€ ์—†์œผ๋ฏ€๋กœ  html, js, css๊ฐ™์€ ํ…์ŠคํŠธ ํŒŒ์ผ์—๋งŒ Gzip์„ ์ ์šฉํ•œ๋‹ค. ๋˜ํ•œ ์šฉ๋Ÿ‰์ด ์ ์€ ํŒŒ์ผ์„ ์••์ถ•ํ•˜๋ฉด ์ „๋‹ฌ๋˜๋Š” ์†๋„๋ณด๋‹ค ์••์ถ•์„ ์ ์šฉํ•˜๊ณ  ํ‘ธ๋Š” ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ณ  ์••์ถ• ์ ์šฉ ์‹œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ CPU ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์†Œ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น IIS์„œ๋ฒ„๋Š”Gzip์ด๋‚˜ deflate ์••์ถ•์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
Rule 5. Put Stylesheets at the Top
Put Stylesheets at the Top  1 / 2 Stylesheet๋Š” ํ•ญ์ƒ head์— ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ํŽ˜์ด์ง€ ๋žœ๋”๋ง์ด ๋” ๋นจ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ์†๋„๊ฐ€ ํ–ฅ์ƒ ๋œ๋‹ค. ์›น ํŽ˜์ด์ง€ ๋‚ด์šฉ์— ์ƒ๊ด€์—†์ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋กœ๋”ฉ์ด ๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋‚ด์šฉ์˜ contents๋ฅผ ๊ฐ€์ง„  ํŽ˜์ด์ง€์™€ ๋Š๋ฆฐ ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํŠนํžˆ ์ค‘์š”ํ•˜๋‹ค. ๋ฌธ์„œ์˜ ์•„๋ž˜์— stylesheet๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด ์š”์†Œ๋ฅผ ๋‹ค ๋ถˆ๋Ÿฌ์˜จ ํ›„์— ๋‹ค์‹œ ์œ„์—์„œ๋ถ€ํ„ฐ style์„ ์ž…ํžˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ IE๋“ฑ์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋งˆ์ง€๋ง‰ style์ด ๋กœ๋”ฉ ๋  ๋•Œ๊นŒ์ง€ ๋žœ๋”๋ง์„ ๋ฉˆ์ถ”๊ณ  ์žˆ๋‹ค๊ฐ€ style์ด ๋กœ๋“œ ๋œ ํ›„ ๋žœ๋”๋ง์„ ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž๋“ค์€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š”ํฐ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. html ํ‘œ์ค€์—์„œ๋„ stylesheet๋ฅผ ํŽ˜์ด์ง€์˜ head์— ๋„ฃ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.
Rule 6. Move Scripts to the Bottom
Move Scripts to the Bottom 1 / 2 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์— ์ง€์—ฐ์ด ๊ฑธ๋ ค ํŽ˜์ด์ง€๊ฐ€ ๋Šฆ๊ฒŒ ์˜คํ”ˆ ๋˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‹จ์— ๋‘์–ด์•ผ ํ•œ๋‹ค.
Rule 7. Avoid CSS Expression
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 ๋  ๋•Œ์—๋งŒ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์Šคํฌ๋กค์„ ์›€์ง์ผ ๋•Œ๋‚˜ ํŽ˜์ด์ง€ ์œ„์—์„œ ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์ผ ๋•Œ์—๋„ ์‹คํ–‰ ๋œ๋‹ค.
Avoid CSS Expression 1 / 2 Expression ์นด์šดํ„ฐ http://stevesouders.com/hpws/expression-counter.php (CSS Expression์ด ๋™์ž‘  ํ•  ๋•Œ๋งˆ๋‹ค ์นด์šดํŠธ ๊ณ„์‚ฐ) ๊ทธ ๋ฐฉ๋ฒ•์„ ํ•ด๊ฒฐ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” expression์ด ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๊ฒŒ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ์œ ๋™์ ์ธ ํŽ˜์ด์ง€์— expresstion์„ ์ค˜์•ผ ํ•œ๋‹ค๋ฉด event handler๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. CSS expresstion์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๋•Œ์—๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•œ ํ›„์— ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ  ์ ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.
Rule 8. Make JS and CSS external
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ํ™”ํ•˜๋Š” ๊ฒƒ์ด  ์‘๋‹ต ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.
Make JS and CSS external 1 / 2 ๋งŽ์€ ํŽ˜์ด์ง€๋กœ ์—ฐ๊ฒฐ๋˜๋Š” front page ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์™ธ๋ถ€ํŒŒ์ผ ์บ์‹ฑ ์ด๋ผ๋Š” ์žฅ์ ๊ณผ inline์˜ HTTP request ๊ฐ์†Œ๋ฅผ  ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.  Front page์—์„œ ์‚ฌ์šฉํ•  JavaScript์™€ CSS๋Š” inline์œผ๋กœ ๋„ฃ์–ด ๋†“๊ณ  ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋”ฉ์„ ๋งˆ์นœ ํ›„์— ๋™์ ์œผ๋กœ  ์™ธ๋ถ€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.  ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ํ›„์˜ ํŽ˜์ด์ง€๋“ค์€ ์บ์‹ฑ ๋˜์–ด ์žˆ๋Š” ์™ธ๋ถ€ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜์–ด ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์งˆ ๊ฒƒ์ด๋‹ค.
Rule 9. Reduce DNS Lookups
Reduce DNS Lookups 1 / 2 ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ IP ์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด DNS์— 20-120 micro sec ์ •๋„ ๊ฑธ๋ฆฌ๋ฏ€๋กœ  Image/JS/CSS ๋งํฌ์˜ Domain ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค.
Rule 10. Minify JavaScript and CSS
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
Minify JavaScript and CSS 1 / 2 ์™ธ๋ถ€ Script์™€ CSSํŒŒ์ผ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ inline์œผ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” Script์™€ CSS๋„ ์ตœ์†Œํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. Gzip (์›น ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €๋กœ ๊ฐˆ ๋•Œ๋งŒ htmlํŒŒ์ผ์„ ์••์ถ•ํ•ด์ฃผ๋Š” ์„œ๋ฒ„๋ชจ๋“ˆ)์„ ํ†ตํ•ด์„œ ์••์ถ•ํ•œ ํ›„๋ผ๋„  Script์™€ CSS๋ฅผ ์ตœ์†Œํ™”๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์ ์–ด๋„ 5%์ด์ƒ ์‚ฌ์ด์ฆˆ๋ฅผ ๋” ๊ฐ์†Œ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
Rule 11. Avoid Redirects
Avoid Redirects 1 / 2 Redirect ๋™์•ˆ์—๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค http://www.paran.com/test ( 301 redirect ๋จ) http://www.paran.com/test/ ๋””๋ ‰ํ† ๋ฆฌ์ผ๊ฒฝ์šฐ/ ๊นŒ์ง€ ๊ธฐ์ž…
Rule 12. Remove Duplicates Scripts
Remove Duplicates Scripts 1 / 2 request ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด  ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋กœ ์ธํ•œ ์ค‘๋ณต ๊ธฐ์ˆ ๋œ ์Šคํฌ๋ฆฝํŠธ ์ค„์ธ๋‹ค. ์‹ค์ œ ๊ฐ™์€ external js๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ํ˜ธ์ถœํ•œ ๋งŒํผ request ๋œ๋‹ค.
Rule 13. Configure ETag
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
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
Configure ETag 1 / 2 ์ถœ์ฒ˜ http://support.microsoft.com/kb/922703/ http://www.apacheweek.com/issues/02-01-18 http://firejune.com/1151
Rule 14. Make Ajax Cacheable
Make Ajax Cacheable 1 / 2 Ajax ํ†ต์‹ ์‹œ ์บ์‰ฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„
Rule 15. Flush the Buffer Early
Flush the Buffer Early 1 / 2 ๋ฒ„ํผ๋ง์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์™„๋ฃŒ๋œ html ์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š”์‹œ์ ์— ์ถœ๋ ฅ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์˜  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค.
Rule 16. Use Get for Ajax Requests
Use Get for Ajax Requests 1 / 2 Ajax ์‚ฌ์šฉํ• ๋•Œ๋Š”GET Method ๊ฐ€ ๋น ๋ฅด๋‹ค. POST ๋Š” XMLHttpRequest์‚ฌ์šฉ์‹œ header ๋ฅผ ๋ณด๋‚ธ ํ›„ data ๋ฅผ ๋ณด๋‚ด๋Š” ๋‘ ๊ฐ€์ง€ step ์œผ๋กœ ๋˜์–ด์žˆ์–ด์„œ GET ๋ณด๋‹ค  ๋Š๋ฆฌ๋‹ค.
Rule 17. Post-load Components, Preload Components
Post-load Components, Preload Components 1 / 2 ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆด ๋•Œ ํ•„์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ์™€ onloadํ›„์— ํ•„์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์„ ๋น ๋ฅด๊ฒŒ  ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐํ™” ์ž‘์—…์ด ํ•„์š”.
Rule 18. Reduce the Number of DOM Elements
Reduce the Number of DOM Elements 1 / 2 Dom ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค.
Rule 19. Split Components Across Domains
Split Components Across Domains 1 / 2 webํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ๋ถ„์‚ฐํ•˜๋ฉด ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ex) css/js/img
Rule 20. Minimize the Number of Iframes
Minimize the Number of Iframes 1 / 2 Iframe์€ html ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฅธ html๋ฌธ์„œ์— ์‚ฝ์ž… ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. Iframe์€ ๊ด‘๊ณ ๋‚˜ ๋ฐฐ๋„ˆ๋“ฑ ์™ธ๋ถ€ ์ปจํ…์ธ ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜, doc type๋“ฑ์ด ๋‹ค๋ฅธ html ๋ฌธ์„œ๋ฅผ ํ•œ ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ค˜์•ผ  ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด ๋‚ด์šฉ์ด ์—†์–ด๋„ ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜๊ณ  request๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๊ผญ ํ•„์š”ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. iframe์•ˆ์— css/js๋“ฑ์ด parent ์™€ ๊ฐ™์ด ์žˆ์–ด๋„ ๋‹ค์‹œ request ๋จ์œผ๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
Rule 21. No 404s
No 404s 1 / 2 ๋ถˆํ•„์š”ํ•œ 404 not found ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
Rule 22. Reduce Cookie Size
Reduce Cookie Size 1 / 2 ๋ถˆํ•„์š”ํ•œ ์ฟ ํ‚ค๋ฅผ ์ œ๊ฑฐ. ํ•ด๋‹น ๋„๋ฉ”์ธ์ˆœ Expire ๋‚ ์งœ ์ง€์ •
Rule 23. Use Cookie-free Domains for Components
Rule 24. Minimize Dom Access
Minimize Dom Access 1 / 2 Javascript๋กœ Dom์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ํŽ˜์ด์ง€ ์‘๋‹ต์†๋„๋ฅผ ๋Š๋ฆฌ๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ Dom Element ๊ตฌ์กฐ๋ฅผ Cache ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ ‘๊ทผ ํ•  ๋•Œ๋งˆ๋‹ค Dom syntax ๋กœ ์“ฐ์ง€ ๋ง๊ณ  ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด์„œ ์“ฐ๋„๋ก ํ•œ๋‹ค.
Rule 25. Develop Smart Event Handlers
Develop Smart Event Handlers 1 / 2 ๊ฐ๊ฐ์˜ Dom element ์— ์ด๋ฒคํŠธ๋ฅผ ๊ฑฐ๋Š”๊ฒƒ ๋ณด๋‹ค๋Š” ์ƒ์œ„ Element ์ด๋ฒคํŠธ๋ฅผ ๊ฑธ์–ด ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ   ํ•˜์œ„ element ์†์„ฑ์œผ๋กœ ์ฒ˜๋ฆฌ ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.
Rule 26. Choose <link> over @import
Choose <link> over @import 1 / 2 <link>๋Š” ํ•˜์œ„ ๋ธŒ๋ผ์šฐ์ €๊นŒ์ง€ ๋ชจ๋‘ ์ง€์›๋˜๊ณ  @import๋Š” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋งŒ ์ง€์›ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ตฌ ๋ฒ„์ „์˜ CSS ๋ฒ„๊ทธ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ @import๋ฅผ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ @import๋ฅผ ์“ฐ๋ฉด <link>๋ฅผ bottom์— ๋‘” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋˜ํ•œ @import๋Š” ์ด๋ฏธ์ง€๋ณด๋‹ค CSS๋ฅผ ๋Šฆ๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์†๋„ ํ–ฅ์ƒ์— ์ข‹์ง€ ์•Š์€ ์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ http://seye2.egloos.com/2319809
Rule 27. Avoid Filters
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');}
Rule 28. Optimize Images
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 ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
Rule 29. Optimize CSS Sprites
Optimize CSS Sprites 1 / 2 Image Sprites ๊ธฐ๋ฒ•์„ ์“ธ ๋•Œ background image๋ฅผ ์ˆ˜์ง์œผ๋กœ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ  ์ˆ˜ํ‰์œผ๋กœ ๋‚˜์—ดํ•˜๋ฉด ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋ฅผ  ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋น„์Šทํ•œ ์ƒ‰์ƒ์˜ image๋ฅผ ์กฐํ•ฉํ•˜๋ฉด ์ปฌ๋Ÿฌ ์ˆ˜๊ฐ€ ์ค„์–ด 256 ์ƒ‰์ƒ ๋ฏธ๋งŒ์˜ PNG8 ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ธฐ์— ์ข‹๋‹ค. ๋ชจ๋ฐ”์ผ ์— ์„œ๋น„์Šค ๋  ๊ฒƒ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋ฉฐ ๊ฐ ์ด๋ฏธ์ง€ ์‚ฌ์ด์— ํฐ ์—ฌ๋ฐฑ์„ ๋‚จ๊ธฐ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. ์—ฌ๋ฐฑ์ด ํŒŒ์ผ ์šฉ๋Ÿ‰์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€๋Š” ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž๋“ค์ด ์ด๋ฏธ์ง€๋ฅผ ํ”ฝ์…€ ๋งต์œผ๋กœ ์••์ถ• ํ‘ธ๋Š”๋ฐ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋งŒ์„ ํ•„์š”๋กœ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 100x100 ์ด๋ฏธ์ง€๋Š” 10000๊ฐœ ํ”ฝ์…€,
Rule 30. Donโ€™t Scale Images in HTML
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์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
Rule 31. Make favicon.ico Small and Cacheable
Make favicon.ico Small and Cacheable 1 / 2 favicon.ico(short for favorites icon)์€ ์„œ๋ฒ„ ๋ฃจํŠธ์— ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ด๋‹ค. IE์—์„œ๋Š” Onload์‹œ ๋‹ค๋ฅธ component๋ฅผ ์š”์ฒญํ•  ๋•Œ ๋จผ์ € ๋กœ๋”ฉ๋จ์œผ๋กœ์จ ํ•ด๋‹น component ๋กœ๋”ฉ ์‹œ ๋ฐฉํ•ด๊ฐ€ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ favicon.ico๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” 1K๋กœ ์ดํ•˜๋กœ ์ž‘๊ฒŒ ๋งŒ๋“ค๊ณ , Expires header๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
Rule 32. Keep Components under 25K
Keep Components under 25K 1 / 2 iPhone์—์„œ 25K๋ณด๋‹ค ํฐ ํฌ๊ธฐ์˜ component๋ฅผ cacheํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ธด ์ œํ•œ์ด๋‹ค. ์••์ถ•์ „์˜ ์šฉ๋Ÿ‰์ด๋ฉฐ Gzip์œผ๋กœ๋Š” ์ถฉ๋ถ„์น˜ ์••์ถ•์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—์ฒ˜์Œ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€ 25K๊ฐ€ ๋„˜์ง€ ์•Š๋„๋ก ์ œ์ž‘ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด Wayne Shea & TenniTheurer์˜ "Performance Research, Part 5: iPhoneCacheability - Making it Stickโ€œ๋ฅผ ์ฐธ์กฐ ํ•  ๊ฒƒ.
Rule 33. Pack Components into a Multipart Document
Pack Components into a Multipart Document 1 / 2 Email์˜ ์ฒจ๋ถ€ํŒŒ์ผ๊ณผ ๊ฐ™์ด multipart(Content-Type ์ค‘ ํ•˜๋‚˜๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ์„น์…˜์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ  ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋กœ ์กฐํ•ฉํ•˜์—ฌ ์ „์†ก) ๋ฌธ์„œ๋กœ component๋“ค์„ ๋ฌถ๋Š” ๊ฒƒ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ component๋ฅผ ํ•˜๋‚˜์˜ HTTP request๋กœ ์ „์†กํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค. ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋จผ์ €์‚ฌ์šฉ์ž agent๊ฐ€ ์ด ๊ธฐ์ˆ ์„ ์ง€์›ํ•˜๋Š” ์ง€๋ฅผ ํ™•์ธ ํ•˜๋„๋ก ํ•œ๋‹ค. (iPhone์€ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.)

Mรกs contenido relacionado

La actualidad mรกs candente

HTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐ
HTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐHTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐ
HTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐ
SangJin Kang
ย 

La actualidad mรกs candente (9)

Vue.js์™€ Firebase๋ฅผ ํ™œ์šฉํ•œ ์›น ์„œ๋น„์Šค ๊ฐœ๋ฐœ
Vue.js์™€ Firebase๋ฅผ ํ™œ์šฉํ•œ ์›น ์„œ๋น„์Šค ๊ฐœ๋ฐœVue.js์™€ Firebase๋ฅผ ํ™œ์šฉํ•œ ์›น ์„œ๋น„์Šค ๊ฐœ๋ฐœ
Vue.js์™€ Firebase๋ฅผ ํ™œ์šฉํ•œ ์›น ์„œ๋น„์Šค ๊ฐœ๋ฐœ
ย 
HTTP แ„‹แ…ชแ†ซแ„‡แ…งแ†จแ„€แ…กแ„‹แ…ตแ„ƒแ…ณ 7แ„Œแ…กแ†ผ แ„แ…ขแ„‰แ…ต
HTTP แ„‹แ…ชแ†ซแ„‡แ…งแ†จแ„€แ…กแ„‹แ…ตแ„ƒแ…ณ 7แ„Œแ…กแ†ผ แ„แ…ขแ„‰แ…ตHTTP แ„‹แ…ชแ†ซแ„‡แ…งแ†จแ„€แ…กแ„‹แ…ตแ„ƒแ…ณ 7แ„Œแ…กแ†ผ แ„แ…ขแ„‰แ…ต
HTTP แ„‹แ…ชแ†ซแ„‡แ…งแ†จแ„€แ…กแ„‹แ…ตแ„ƒแ…ณ 7แ„Œแ…กแ†ผ แ„แ…ขแ„‰แ…ต
ย 
HTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐ
HTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐHTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐ
HTTP/3 ์‹œ๋Œ€์˜ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ดํ•ดํ•˜๊ธฐ
ย 
HTTP/2์™€ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ์•ˆ
HTTP/2์™€ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ์•ˆHTTP/2์™€ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ์•ˆ
HTTP/2์™€ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ์•ˆ
ย 
FCGI, C++๋กœ Restful ์„œ๋ฒ„ ๊ฐœ๋ฐœ
FCGI, C++๋กœ Restful ์„œ๋ฒ„ ๊ฐœ๋ฐœFCGI, C++๋กœ Restful ์„œ๋ฒ„ ๊ฐœ๋ฐœ
FCGI, C++๋กœ Restful ์„œ๋ฒ„ ๊ฐœ๋ฐœ
ย 
Web server
Web serverWeb server
Web server
ย 
[D2 CAMPUS]แ„‹แ…ฐแ†ธ แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„‹แ…ด แ„‰แ…ณแ„‘แ…ฆแ†จ : HTTP
[D2 CAMPUS]แ„‹แ…ฐแ†ธ แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„‹แ…ด แ„‰แ…ณแ„‘แ…ฆแ†จ : HTTP[D2 CAMPUS]แ„‹แ…ฐแ†ธ แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„‹แ…ด แ„‰แ…ณแ„‘แ…ฆแ†จ : HTTP
[D2 CAMPUS]แ„‹แ…ฐแ†ธ แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„‹แ…ด แ„‰แ…ณแ„‘แ…ฆแ†จ : HTTP
ย 
Web_01 HTML
Web_01 HTMLWeb_01 HTML
Web_01 HTML
ย 
[112]clova platform ์ธ๊ณต์ง€๋Šฅ์„ ์—ฎ๋Š” ๊ธฐ์ˆ 
[112]clova platform ์ธ๊ณต์ง€๋Šฅ์„ ์—ฎ๋Š” ๊ธฐ์ˆ [112]clova platform ์ธ๊ณต์ง€๋Šฅ์„ ์—ฎ๋Š” ๊ธฐ์ˆ 
[112]clova platform ์ธ๊ณต์ง€๋Šฅ์„ ์—ฎ๋Š” ๊ธฐ์ˆ 
ย 

Destacado

KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผKTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผ
KTH, ์ผ€์ดํ‹ฐํ•˜์ดํ…”
ย 
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆKTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆ
KTH, ์ผ€์ดํ‹ฐํ•˜์ดํ…”
ย 
Web publishing life
Web publishing lifeWeb publishing life
Web publishing life
clearboth
ย 
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐKTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐ
KTH, ์ผ€์ดํ‹ฐํ•˜์ดํ…”
ย 
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜
KTH, ์ผ€์ดํ‹ฐํ•˜์ดํ…”
ย 
[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221
[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221
[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221
KTH, ์ผ€์ดํ‹ฐํ•˜์ดํ…”
ย 
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜]  Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜]  Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity
Nts Nuli
ย 
WEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ต
WEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ตWEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ต
WEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ต
์ง€์ˆ˜ ์œค
ย 

Destacado (20)

KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผKTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(2)_๋””์ž์ธ์‚ฌ๋ก€_์ •๋•์ฃผ
ย 
Web_03_Front-end Advance
Web_03_Front-end AdvanceWeb_03_Front-end Advance
Web_03_Front-end Advance
ย 
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆKTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_1์ฐจ_๋””์ž์ธ์šฉ์–ด_์ง€ํ›ˆ
ย 
Web publishing life
Web publishing lifeWeb publishing life
Web publishing life
ย 
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐKTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐ
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_2์ฐจ(1)_๋””์ž์ธํ”„๋กœ์„ธ์Šค,ํ˜‘์—…_ํ•œ์žฌ๊ธฐ
ย 
Front-End Developer's work process
Front-End Developer's work processFront-End Developer's work process
Front-End Developer's work process
ย 
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜
KTH_Detail day_์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ_3์ฐจ_๋””์ž์ธ๊ธฐ๋ณธ์š”์†Œ_๋ฐ•์ง€ํ™˜
ย 
Web_05_ jQuery
Web_05_ jQueryWeb_05_ jQuery
Web_05_ jQuery
ย 
๋งˆํฌ์—…๊ฐœ๋ฐœ์ž๊ฐ€ UX๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ 
๋งˆํฌ์—…๊ฐœ๋ฐœ์ž๊ฐ€ UX๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ ๋งˆํฌ์—…๊ฐœ๋ฐœ์ž๊ฐ€ UX๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ 
๋งˆํฌ์—…๊ฐœ๋ฐœ์ž๊ฐ€ UX๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ 
ย 
Front end performance analysis v0.6
Front end performance analysis v0.6Front end performance analysis v0.6
Front end performance analysis v0.6
ย 
[๋ณ„์ฒœ์ง€ ์„ธ๋ฏธ๋‚˜] ์„ธ์…˜1 Sencha๋กœ ๋์žฅ๋‚ด๋Š” Front-End ๊ฐœ๋ฐœ๊ณผ Architect
[๋ณ„์ฒœ์ง€ ์„ธ๋ฏธ๋‚˜] ์„ธ์…˜1 Sencha๋กœ ๋์žฅ๋‚ด๋Š” Front-End ๊ฐœ๋ฐœ๊ณผ Architect[๋ณ„์ฒœ์ง€ ์„ธ๋ฏธ๋‚˜] ์„ธ์…˜1 Sencha๋กœ ๋์žฅ๋‚ด๋Š” Front-End ๊ฐœ๋ฐœ๊ณผ Architect
[๋ณ„์ฒœ์ง€ ์„ธ๋ฏธ๋‚˜] ์„ธ์…˜1 Sencha๋กœ ๋์žฅ๋‚ด๋Š” Front-End ๊ฐœ๋ฐœ๊ณผ Architect
ย 
[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221
[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221
[๋ฐœํ‘œ์ž๋ฃŒ]์•ˆ๋“œ๋กœ๋ฉ”๋‹ค์—์„œ ์˜จ ๋””์ž์ด๋„ˆ์ด์•ผ๊ธฐ 5์ฐจ next_web_์ง€ํ›ˆ_20130221
ย 
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜]  Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜]  Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] Front-End ์ตœ์ ํ™”์˜ ๋ํŒ์™•, CSM + Markup Complexity
ย 
[D2แ„ƒแ…ขแ„’แ…กแ†จแ„‰แ…ขแ†ผแ„‰แ…ฆแ„†แ…ตแ„‚แ…ก] frontendแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…ก แ„ƒแ…ณแ†ฏแ„…แ…งแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ต
[D2แ„ƒแ…ขแ„’แ…กแ†จแ„‰แ…ขแ†ผแ„‰แ…ฆแ„†แ…ตแ„‚แ…ก] frontendแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…ก แ„ƒแ…ณแ†ฏแ„…แ…งแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ต[D2แ„ƒแ…ขแ„’แ…กแ†จแ„‰แ…ขแ†ผแ„‰แ…ฆแ„†แ…ตแ„‚แ…ก] frontendแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…ก แ„ƒแ…ณแ†ฏแ„…แ…งแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ต
[D2แ„ƒแ…ขแ„’แ…กแ†จแ„‰แ…ขแ†ผแ„‰แ…ฆแ„†แ…ตแ„‚แ…ก] frontendแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…ก แ„ƒแ…ณแ†ฏแ„…แ…งแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ต
ย 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
ย 
How_to_choose_the_right_framework
How_to_choose_the_right_frameworkHow_to_choose_the_right_framework
How_to_choose_the_right_framework
ย 
แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ ์•Œ์•„๋ณด์ž.
แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ ์•Œ์•„๋ณด์ž.แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ ์•Œ์•„๋ณด์ž.
แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ ์•Œ์•„๋ณด์ž.
ย 
WEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ต
WEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ตWEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ต
WEB Front-End แ„€แ…ขแ„‡แ…กแ†ฏแ„€แ…ชแ„Œแ…ฅแ†ผ แ„‰แ…กแ†ฏแ„‘แ…งแ„‡แ…ฉแ„€แ…ต
ย 
์ฝ”๋“œ์Šค์ฟผ๋“œ ๋งˆ์Šคํ„ฐ์ฆˆ์„ธ๋ฏธ๋‚˜ - UIแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…กแ„ƒแ…ซแ„‡แ…ฉแ„Œแ…ก
์ฝ”๋“œ์Šค์ฟผ๋“œ ๋งˆ์Šคํ„ฐ์ฆˆ์„ธ๋ฏธ๋‚˜ - UIแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…กแ„ƒแ…ซแ„‡แ…ฉแ„Œแ…ก์ฝ”๋“œ์Šค์ฟผ๋“œ ๋งˆ์Šคํ„ฐ์ฆˆ์„ธ๋ฏธ๋‚˜ - UIแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…กแ„ƒแ…ซแ„‡แ…ฉแ„Œแ…ก
์ฝ”๋“œ์Šค์ฟผ๋“œ ๋งˆ์Šคํ„ฐ์ฆˆ์„ธ๋ฏธ๋‚˜ - UIแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„€แ…กแ„ƒแ…ซแ„‡แ…ฉแ„Œแ…ก
ย 
ํผ๋ธ”๋ฆฌ์…”, ํ”„๋ก ํŠธ์—”๋“œ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋‹ค
ํผ๋ธ”๋ฆฌ์…”, ํ”„๋ก ํŠธ์—”๋“œ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋‹คํผ๋ธ”๋ฆฌ์…”, ํ”„๋ก ํŠธ์—”๋“œ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋‹ค
ํผ๋ธ”๋ฆฌ์…”, ํ”„๋ก ํŠธ์—”๋“œ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋‹ค
ย 

Similar a High performance websites v1.0

Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€
Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€
Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€
yongwoo Jeon
ย 
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?
Nts Nuli
ย 
ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019
ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019
ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019
Amazon Web Services Korea
ย 
Redis
RedisRedis
Redis
knight1128
ย 
[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”
[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”
[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”
NHN FORWARD
ย 
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœHTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
Toby Yun
ย 

Similar a High performance websites v1.0 (20)

์‘๋‹ตํ•˜๋ผ ๋ฐ˜์‘ํ˜•์›น - 3. bootstrap
์‘๋‹ตํ•˜๋ผ ๋ฐ˜์‘ํ˜•์›น - 3. bootstrap์‘๋‹ตํ•˜๋ผ ๋ฐ˜์‘ํ˜•์›น - 3. bootstrap
์‘๋‹ตํ•˜๋ผ ๋ฐ˜์‘ํ˜•์›น - 3. bootstrap
ย 
์›นํ‘œ์ค€ ๊ต์œก
์›นํ‘œ์ค€ ๊ต์œก์›นํ‘œ์ค€ ๊ต์œก
์›นํ‘œ์ค€ ๊ต์œก
ย 
Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€
Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€
Html5 ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” 50๊ฐ€์ง€
ย 
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?
[2012๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์˜ค๋น ~ ๋„ค์ด๋ฒ„ ์™œ ์ด๋ ‡๊ฒŒ ๋Šฆ๊ฒŒ ๋– ?
ย 
ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019
ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019
ํšจ์œจ์ ์ธ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Glue, EMR ํ™œ์šฉ - ๊น€ํƒœํ˜„ ์†”๋ฃจ์…˜์ฆˆ ์•„ํ‚คํ…ํŠธ, AWS :: AWS Summit Seoul 2019
ย 
Front-end Development Process - ์–ด๋””๊นŒ์ง€ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‚˜
Front-end Development Process - ์–ด๋””๊นŒ์ง€ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‚˜Front-end Development Process - ์–ด๋””๊นŒ์ง€ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‚˜
Front-end Development Process - ์–ด๋””๊นŒ์ง€ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‚˜
ย 
Redis
RedisRedis
Redis
ย 
[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”
[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”
[2018] ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”
ย 
Accelerate spring boot application with apache ignite
Accelerate spring boot application with apache igniteAccelerate spring boot application with apache ignite
Accelerate spring boot application with apache ignite
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Atlassian webinar ๊ธฐ๋ณธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…(1 of 2)
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Atlassian webinar ๊ธฐ๋ณธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…(1 of 2)[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Atlassian webinar ๊ธฐ๋ณธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…(1 of 2)
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Atlassian webinar ๊ธฐ๋ณธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…(1 of 2)
ย 
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 1์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 1์ผ์ฐจ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 1์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 1์ผ์ฐจ
ย 
ํ˜„์‹ค์  PWA
ํ˜„์‹ค์  PWAํ˜„์‹ค์  PWA
ํ˜„์‹ค์  PWA
ย 
แ„‹แ…ฐแ†ธแ„‹แ…ฆ แ„ˆแ…กแ„…แ…ณแ†ซ แ„‚แ…กแ†ฏแ„€แ…ขแ„…แ…ณแ†ฏ แ„ƒแ…กแ†ฏแ„‹แ…กแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„’แ…ฃแ†ผแ„‰แ…กแ†ผ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ต
แ„‹แ…ฐแ†ธแ„‹แ…ฆ แ„ˆแ…กแ„…แ…ณแ†ซ แ„‚แ…กแ†ฏแ„€แ…ขแ„…แ…ณแ†ฏ แ„ƒแ…กแ†ฏแ„‹แ…กแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„’แ…ฃแ†ผแ„‰แ…กแ†ผ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ตแ„‹แ…ฐแ†ธแ„‹แ…ฆ แ„ˆแ…กแ„…แ…ณแ†ซ แ„‚แ…กแ†ฏแ„€แ…ขแ„…แ…ณแ†ฏ แ„ƒแ…กแ†ฏแ„‹แ…กแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„’แ…ฃแ†ผแ„‰แ…กแ†ผ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ต
แ„‹แ…ฐแ†ธแ„‹แ…ฆ แ„ˆแ…กแ„…แ…ณแ†ซ แ„‚แ…กแ†ฏแ„€แ…ขแ„…แ…ณแ†ฏ แ„ƒแ…กแ†ฏแ„‹แ…กแ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„’แ…ฃแ†ผแ„‰แ…กแ†ผ แ„‹แ…ตแ„‹แ…ฃแ„€แ…ต
ย 
์›นํ‘œ์ค€์˜ ์ดํ•ด
์›นํ‘œ์ค€์˜ ์ดํ•ด์›นํ‘œ์ค€์˜ ์ดํ•ด
์›นํ‘œ์ค€์˜ ์ดํ•ด
ย 
Scalable web architecture and distributed systems
Scalable web architecture and distributed systemsScalable web architecture and distributed systems
Scalable web architecture and distributed systems
ย 
Scalable web architecture and distributed systems
Scalable web architecture and distributed systemsScalable web architecture and distributed systems
Scalable web architecture and distributed systems
ย 
แ„‹แ…ฐแ„‹แ…ตแ†ฏ๋ธŒ๋ผ์šฐ์ € แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„†แ…ตแ†พ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช
แ„‹แ…ฐแ„‹แ…ตแ†ฏ๋ธŒ๋ผ์šฐ์ € แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„†แ…ตแ†พ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ชแ„‹แ…ฐแ„‹แ…ตแ†ฏ๋ธŒ๋ผ์šฐ์ € แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„†แ…ตแ†พ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช
แ„‹แ…ฐแ„‹แ…ตแ†ฏ๋ธŒ๋ผ์šฐ์ € แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„†แ…ตแ†พ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช
ย 
ecdevday3 ํšจ์œจ์ ์ธ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌ
ecdevday3 ํšจ์œจ์ ์ธ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌecdevday3 ํšจ์œจ์ ์ธ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌ
ecdevday3 ํšจ์œจ์ ์ธ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌ
ย 
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœHTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
ย 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
ย 

High performance websites v1.0

  • 1. Best Practices for Speeding Up Your Web Site ๋””์ž์ธ์‹คUI Dev ์ด์„ ์‹ค, ๊น€์ˆ˜์„ฑ
  • 2. The important of Front-end Performance
  • 3. Downloading (http://www.yahoo.com) in IE : empty cache Back-end =5% Front-end = 95%
  • 4. Downloading (http://www.yahoo.com) in IE : primed cache Even here, front-end= 95%
  • 5. Downloading percentage * Percentage of time spent downloading the HTML document for 10 top web site
  • 6. Downloading percentage ๋ณดํ†ต ์›น์‚ฌ์ดํŠธ์—์„œ Html ๋ฌธ์„œ๋ฅผ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‹ค์šด(Back-end) ๋ฐ›๋Š”๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์€ 10~20%์ด๋‹ค. ๊ทธ ์™ธ 80~90%๋Š” Html์—์„œ ์‚ฌ์šฉ๋˜๋Š” components๋ฅผ ๋‹ค์šด(Front-end)๋ฐ›๋Š”๋ฐ ์†Œ์š”๋œ๋‹ค. *๋‹จ, cache๋œ ์ƒํƒœ์˜ Google์€ ์ œ์™ธ๋œ๋‹ค. Google์€ ์˜ค์ง 6๊ฐœ์˜ components๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— front-end์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์ง€ ์•Š๋‹ค.
  • 7.
  • 8. Front-end๋ฅผ 50% ์ค„์ผ ๊ฒฝ์šฐ : ์ „์ฒด์˜ 40~45% ๊ฐ์†Œ๋‘ ๋ฒˆ์งธ, Front-end์—์„œ ์ž‘์—…ํ•  ๊ฒฝ์šฐ, Back-end์—์„œ ์ž‘์—…ํ•  ๋•Œ ๋ณด๋‹ค๋” ์ ์€ ์‹œ๊ฐ„๊ณผ ๋” ์ ์€ resource๊ฐ€ ํ•„์š”. ์„ธ ๋ฒˆ์งธ, ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ, ๋ณดํ†ต 25% or ๊ทธ ์ด์ƒ์˜ response time์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • 9. Rule 1. Make Fewer HTTP Requests
  • 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+/โ€ฆโ€ฆโ€ฆ.">
  • 15. Rule 2. Use a CDN(Content Delivery Network)
  • 16. Use a CDN ์ผ์ข…์˜ ์บ์‹œ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ „์ฒด network ์ƒ์— ๋™์ผํ•œ contents ๋‚ด์šฉ์„ ๋ณต์ œํ•˜์—ฌ, ๋Œ€๊ทœ๋ชจ ์ธํŠธ๋ผ๋„ท ๋˜๋Š” ์ธํ„ฐ๋„ท์ƒ์— ๋ถ„์‚ฐ์‹œ์ผœ ๋†“์€ ์‹œ์Šคํ…œ. ์ธํ„ฐ๋„ท ์ด์šฉ์ž์˜ ์ฆ๊ฐ€์™€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋“ฑ ๋Œ€์šฉ๋Ÿ‰ contents์— ๋Œ€ํ•œ ์ˆ˜์š”์˜ ์ฆ๊ฐ€๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๋ฐ ๋น„ํ•ด Middle-Mile์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ๊ฐ„ ์—ฐ๊ฒฐ๊ตฌ๊ฐ„์— ๋Œ€ํ•œ ํˆฌ์ž๋Š” ์ด์— ๋ฏธ์น˜์ง€ ๋ชปํ•ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ธํ„ฐ๋„ท์€ ํŠธ๋ž˜ํ”ฝ์˜ ์ •์ฒดํ˜„์ƒ, ์ฆ‰ ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด Content Delivery Network์ด๋‹ค. CDN์€ ๊ธฐ๊ฐ„๋ง๊ณผ ๊ฐ€์ž…์ž๋ง๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๋ฌผ๋ฆฌ์ ์ธ ๋ง์˜ ์ฆ์„ค์„ ํ†ตํ•ด ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ‘๋ชฉํ˜„์ƒ์˜ ๋Œ€์ƒ์ธ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ, ์ฆ‰ Contents๋ฅผ ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ์˜ ์ฃผ์š”์ง€์ ์œผ๋กœ ๋ถ„์‚ฐ์‹œํ‚ด์œผ๋กœ์จ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. CDN์€ ์‚ฌ์šฉ์ž์˜ ์ฝ˜ํ…์ธ  ์š”๊ตฌ์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ค‘๊ณ„ํ•ด ์ฃผ๊ณ  contents๋ฅผ ์ „์†กํ•ด ์ค€๋‹ค. Contents๊ฐ€ ๋ณต์ œ๋˜์–ด ํŠน์ • ๊ตญ๊ฐ€ ๋˜๋Š” ์ „์„ธ๊ณ„์— ๊ฑธ์ณ ๋ถ„์‚ฐ ๋ฐฐ์น˜๋˜๋ฉด, ์‚ฌ์šฉ์ž๋“ค์€ ๊ทธ๊ฒƒ์ด ํ•˜๋‚˜์˜ ์›น์‚ฌ์ดํŠธ์— ์žˆ์„ ๋•Œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋น ๋ฅด๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. Akamai์™€ ๊ฐ™์€ contents ์ „๋‹ฌ ์กฐ์ง, ์ „๊ตญ์˜ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๊ทœ๋ชจ ISP, ๋˜๋Š” ๋Œ€๊ธฐ์—… ๋“ฑ์— ์˜ํ•ด ์ œ๊ณต ๋œ๋‹ค
  • 17.
  • 18. Rule 3. Add an Expires or a Cache-Control Header
  • 19. Add an Expires or a Cache-Control Header ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์œ„ํ•ด Expires Date ์™€ Cache Control ์ถ”๊ฐ€
  • 20. Rule 4. Gzip Components
  • 21. Gzip Components Gzip์€ ๊ตญ์ œ ํ‘œ์ค€์œผ๋กœ ๋“ฑ๋ก๋œ ๋ฌด๋ฃŒ ์••์ถ• ํฌ๋งท์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž์‹ ์ด ์••์ถ•์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š” ์••์ถ• ํฌ๋งท์„ HTTP ํ—ค๋” Accept-Encoding์˜ ์†์„ฑ์„ ์ด์šฉํ•ด์„œ ์ „๋‹ฌํ•˜๋Š”๋ฐ์ด ๋•Œ ์„œ๋ฒ„๋Š” ์ด ์†์„ฑ์„ ํ™•์ธํ•˜์—ฌ ๋ณธ๋ฌธ์„ ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. (RFC1952) ์ด ๊ธฐ์ˆ ์€ ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๊ทธ๋งŒํผ ์„ฑ๋Šฅ๋„ ์ข‹๋‹ค. ์ด๋ฏธ์ง€ ๋“ฑ ์ด๋ฏธ ์••์ถ•์ฒ˜๋ฆฌ๊ฐ€ ๋œ ํŒŒ์ผ์—๋Š” ํšจ๊ณผ๊ฐ€ ์—†์œผ๋ฏ€๋กœ html, js, css๊ฐ™์€ ํ…์ŠคํŠธ ํŒŒ์ผ์—๋งŒ Gzip์„ ์ ์šฉํ•œ๋‹ค. ๋˜ํ•œ ์šฉ๋Ÿ‰์ด ์ ์€ ํŒŒ์ผ์„ ์••์ถ•ํ•˜๋ฉด ์ „๋‹ฌ๋˜๋Š” ์†๋„๋ณด๋‹ค ์••์ถ•์„ ์ ์šฉํ•˜๊ณ  ํ‘ธ๋Š” ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ณ  ์••์ถ• ์ ์šฉ ์‹œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ CPU ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์†Œ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น IIS์„œ๋ฒ„๋Š”Gzip์ด๋‚˜ deflate ์••์ถ•์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • 22. Rule 5. Put Stylesheets at the Top
  • 23. Put Stylesheets at the Top 1 / 2 Stylesheet๋Š” ํ•ญ์ƒ head์— ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ํŽ˜์ด์ง€ ๋žœ๋”๋ง์ด ๋” ๋นจ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ์†๋„๊ฐ€ ํ–ฅ์ƒ ๋œ๋‹ค. ์›น ํŽ˜์ด์ง€ ๋‚ด์šฉ์— ์ƒ๊ด€์—†์ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋กœ๋”ฉ์ด ๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋‚ด์šฉ์˜ contents๋ฅผ ๊ฐ€์ง„ ํŽ˜์ด์ง€์™€ ๋Š๋ฆฐ ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํŠนํžˆ ์ค‘์š”ํ•˜๋‹ค. ๋ฌธ์„œ์˜ ์•„๋ž˜์— stylesheet๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด ์š”์†Œ๋ฅผ ๋‹ค ๋ถˆ๋Ÿฌ์˜จ ํ›„์— ๋‹ค์‹œ ์œ„์—์„œ๋ถ€ํ„ฐ style์„ ์ž…ํžˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ IE๋“ฑ์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋งˆ์ง€๋ง‰ style์ด ๋กœ๋”ฉ ๋  ๋•Œ๊นŒ์ง€ ๋žœ๋”๋ง์„ ๋ฉˆ์ถ”๊ณ  ์žˆ๋‹ค๊ฐ€ style์ด ๋กœ๋“œ ๋œ ํ›„ ๋žœ๋”๋ง์„ ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž๋“ค์€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š”ํฐ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. html ํ‘œ์ค€์—์„œ๋„ stylesheet๋ฅผ ํŽ˜์ด์ง€์˜ head์— ๋„ฃ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.
  • 24. Rule 6. Move Scripts to the Bottom
  • 25. Move Scripts to the Bottom 1 / 2 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์— ์ง€์—ฐ์ด ๊ฑธ๋ ค ํŽ˜์ด์ง€๊ฐ€ ๋Šฆ๊ฒŒ ์˜คํ”ˆ ๋˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‹จ์— ๋‘์–ด์•ผ ํ•œ๋‹ค.
  • 26. Rule 7. Avoid CSS Expression
  • 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์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๋•Œ์—๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•œ ํ›„์— ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.
  • 29. Rule 8. Make JS and CSS external
  • 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์œผ๋กœ ๋„ฃ์–ด ๋†“๊ณ  ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋”ฉ์„ ๋งˆ์นœ ํ›„์— ๋™์ ์œผ๋กœ ์™ธ๋ถ€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ํ›„์˜ ํŽ˜์ด์ง€๋“ค์€ ์บ์‹ฑ ๋˜์–ด ์žˆ๋Š” ์™ธ๋ถ€ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜์–ด ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์งˆ ๊ฒƒ์ด๋‹ค.
  • 32. Rule 9. Reduce DNS Lookups
  • 33. Reduce DNS Lookups 1 / 2 ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ IP ์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด DNS์— 20-120 micro sec ์ •๋„ ๊ฑธ๋ฆฌ๋ฏ€๋กœ Image/JS/CSS ๋งํฌ์˜ Domain ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค.
  • 34. Rule 10. Minify JavaScript and CSS
  • 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%์ด์ƒ ์‚ฌ์ด์ฆˆ๋ฅผ ๋” ๊ฐ์†Œ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • 37. Rule 11. Avoid Redirects
  • 38. Avoid Redirects 1 / 2 Redirect ๋™์•ˆ์—๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค http://www.paran.com/test ( 301 redirect ๋จ) http://www.paran.com/test/ ๋””๋ ‰ํ† ๋ฆฌ์ผ๊ฒฝ์šฐ/ ๊นŒ์ง€ ๊ธฐ์ž…
  • 39. Rule 12. Remove Duplicates Scripts
  • 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
  • 45. Rule 14. Make Ajax Cacheable
  • 46. Make Ajax Cacheable 1 / 2 Ajax ํ†ต์‹ ์‹œ ์บ์‰ฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„
  • 47. Rule 15. Flush the Buffer Early
  • 48. Flush the Buffer Early 1 / 2 ๋ฒ„ํผ๋ง์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์™„๋ฃŒ๋œ html ์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š”์‹œ์ ์— ์ถœ๋ ฅ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค.
  • 49. Rule 16. Use Get for Ajax Requests
  • 50. Use Get for Ajax Requests 1 / 2 Ajax ์‚ฌ์šฉํ• ๋•Œ๋Š”GET Method ๊ฐ€ ๋น ๋ฅด๋‹ค. POST ๋Š” XMLHttpRequest์‚ฌ์šฉ์‹œ header ๋ฅผ ๋ณด๋‚ธ ํ›„ data ๋ฅผ ๋ณด๋‚ด๋Š” ๋‘ ๊ฐ€์ง€ step ์œผ๋กœ ๋˜์–ด์žˆ์–ด์„œ GET ๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.
  • 51. Rule 17. Post-load Components, Preload Components
  • 52. Post-load Components, Preload Components 1 / 2 ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆด ๋•Œ ํ•„์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ์™€ onloadํ›„์— ํ•„์š”ํ•œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐํ™” ์ž‘์—…์ด ํ•„์š”.
  • 53. Rule 18. Reduce the Number of DOM Elements
  • 54. Reduce the Number of DOM Elements 1 / 2 Dom ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค.
  • 55. Rule 19. Split Components Across Domains
  • 56. Split Components Across Domains 1 / 2 webํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ๋ถ„์‚ฐํ•˜๋ฉด ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ex) css/js/img
  • 57. Rule 20. Minimize the Number of Iframes
  • 58. Minimize the Number of Iframes 1 / 2 Iframe์€ html ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฅธ html๋ฌธ์„œ์— ์‚ฝ์ž… ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. Iframe์€ ๊ด‘๊ณ ๋‚˜ ๋ฐฐ๋„ˆ๋“ฑ ์™ธ๋ถ€ ์ปจํ…์ธ ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜, doc type๋“ฑ์ด ๋‹ค๋ฅธ html ๋ฌธ์„œ๋ฅผ ํ•œ ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ค˜์•ผ ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด ๋‚ด์šฉ์ด ์—†์–ด๋„ ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜๊ณ  request๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๊ผญ ํ•„์š”ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. iframe์•ˆ์— css/js๋“ฑ์ด parent ์™€ ๊ฐ™์ด ์žˆ์–ด๋„ ๋‹ค์‹œ request ๋จ์œผ๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • 59. Rule 21. No 404s
  • 60. No 404s 1 / 2 ๋ถˆํ•„์š”ํ•œ 404 not found ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
  • 61. Rule 22. Reduce Cookie Size
  • 62. Reduce Cookie Size 1 / 2 ๋ถˆํ•„์š”ํ•œ ์ฟ ํ‚ค๋ฅผ ์ œ๊ฑฐ. ํ•ด๋‹น ๋„๋ฉ”์ธ์ˆœ Expire ๋‚ ์งœ ์ง€์ •
  • 63. Rule 23. Use Cookie-free Domains for Components
  • 64. Rule 24. Minimize Dom Access
  • 65. Minimize Dom Access 1 / 2 Javascript๋กœ Dom์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ํŽ˜์ด์ง€ ์‘๋‹ต์†๋„๋ฅผ ๋Š๋ฆฌ๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ Dom Element ๊ตฌ์กฐ๋ฅผ Cache ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ ‘๊ทผ ํ•  ๋•Œ๋งˆ๋‹ค Dom syntax ๋กœ ์“ฐ์ง€ ๋ง๊ณ  ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด์„œ ์“ฐ๋„๋ก ํ•œ๋‹ค.
  • 66. Rule 25. Develop Smart Event Handlers
  • 67. Develop Smart Event Handlers 1 / 2 ๊ฐ๊ฐ์˜ Dom element ์— ์ด๋ฒคํŠธ๋ฅผ ๊ฑฐ๋Š”๊ฒƒ ๋ณด๋‹ค๋Š” ์ƒ์œ„ Element ์ด๋ฒคํŠธ๋ฅผ ๊ฑธ์–ด ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ•˜์œ„ element ์†์„ฑ์œผ๋กœ ์ฒ˜๋ฆฌ ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.
  • 68. Rule 26. Choose <link> over @import
  • 69. Choose <link> over @import 1 / 2 <link>๋Š” ํ•˜์œ„ ๋ธŒ๋ผ์šฐ์ €๊นŒ์ง€ ๋ชจ๋‘ ์ง€์›๋˜๊ณ  @import๋Š” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋งŒ ์ง€์›ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ตฌ ๋ฒ„์ „์˜ CSS ๋ฒ„๊ทธ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ @import๋ฅผ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ @import๋ฅผ ์“ฐ๋ฉด <link>๋ฅผ bottom์— ๋‘” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋˜ํ•œ @import๋Š” ์ด๋ฏธ์ง€๋ณด๋‹ค CSS๋ฅผ ๋Šฆ๊ฒŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์†๋„ ํ–ฅ์ƒ์— ์ข‹์ง€ ์•Š์€ ์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ http://seye2.egloos.com/2319809
  • 70. Rule 27. Avoid Filters
  • 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 ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 74. Rule 29. Optimize CSS Sprites
  • 75. Optimize CSS Sprites 1 / 2 Image Sprites ๊ธฐ๋ฒ•์„ ์“ธ ๋•Œ background image๋ฅผ ์ˆ˜์ง์œผ๋กœ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ  ์ˆ˜ํ‰์œผ๋กœ ๋‚˜์—ดํ•˜๋ฉด ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋น„์Šทํ•œ ์ƒ‰์ƒ์˜ image๋ฅผ ์กฐํ•ฉํ•˜๋ฉด ์ปฌ๋Ÿฌ ์ˆ˜๊ฐ€ ์ค„์–ด 256 ์ƒ‰์ƒ ๋ฏธ๋งŒ์˜ PNG8 ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ธฐ์— ์ข‹๋‹ค. ๋ชจ๋ฐ”์ผ ์— ์„œ๋น„์Šค ๋  ๊ฒƒ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋ฉฐ ๊ฐ ์ด๋ฏธ์ง€ ์‚ฌ์ด์— ํฐ ์—ฌ๋ฐฑ์„ ๋‚จ๊ธฐ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. ์—ฌ๋ฐฑ์ด ํŒŒ์ผ ์šฉ๋Ÿ‰์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€๋Š” ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž๋“ค์ด ์ด๋ฏธ์ง€๋ฅผ ํ”ฝ์…€ ๋งต์œผ๋กœ ์••์ถ• ํ‘ธ๋Š”๋ฐ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋งŒ์„ ํ•„์š”๋กœ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 100x100 ์ด๋ฏธ์ง€๋Š” 10000๊ฐœ ํ”ฝ์…€,
  • 76. Rule 30. Donโ€™t Scale Images in HTML
  • 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์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • 78. Rule 31. Make favicon.ico Small and Cacheable
  • 79. Make favicon.ico Small and Cacheable 1 / 2 favicon.ico(short for favorites icon)์€ ์„œ๋ฒ„ ๋ฃจํŠธ์— ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ด๋‹ค. IE์—์„œ๋Š” Onload์‹œ ๋‹ค๋ฅธ component๋ฅผ ์š”์ฒญํ•  ๋•Œ ๋จผ์ € ๋กœ๋”ฉ๋จ์œผ๋กœ์จ ํ•ด๋‹น component ๋กœ๋”ฉ ์‹œ ๋ฐฉํ•ด๊ฐ€ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ favicon.ico๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” 1K๋กœ ์ดํ•˜๋กœ ์ž‘๊ฒŒ ๋งŒ๋“ค๊ณ , Expires header๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • 80. Rule 32. Keep Components under 25K
  • 81. Keep Components under 25K 1 / 2 iPhone์—์„œ 25K๋ณด๋‹ค ํฐ ํฌ๊ธฐ์˜ component๋ฅผ cacheํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ธด ์ œํ•œ์ด๋‹ค. ์••์ถ•์ „์˜ ์šฉ๋Ÿ‰์ด๋ฉฐ Gzip์œผ๋กœ๋Š” ์ถฉ๋ถ„์น˜ ์••์ถ•์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—์ฒ˜์Œ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€ 25K๊ฐ€ ๋„˜์ง€ ์•Š๋„๋ก ์ œ์ž‘ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด Wayne Shea & TenniTheurer์˜ "Performance Research, Part 5: iPhoneCacheability - Making it Stickโ€œ๋ฅผ ์ฐธ์กฐ ํ•  ๊ฒƒ.
  • 82. Rule 33. Pack Components into a Multipart Document
  • 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