Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/parksb/Front-End-Performance-Checklist
๐ฎ ๋ ๋น ๋ฅด๊ฒ ์๋ํ๋ ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ
https://github.com/parksb/Front-End-Performance-Checklist
checklist css front-end-developer-tool front-end-development frontend guidelines hacktoberfest html javascript korean lists performance performance-metrics reference resources web-development
Last synced: 3 months ago
JSON representation
๐ฎ ๋ ๋น ๋ฅด๊ฒ ์๋ํ๋ ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ
- Host: GitHub
- URL: https://github.com/parksb/Front-End-Performance-Checklist
- Owner: parksb
- License: mit
- Created: 2018-07-22T12:14:16.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-04-13T02:48:46.000Z (over 3 years ago)
- Last Synced: 2024-06-27T07:10:40.273Z (4 months ago)
- Topics: checklist, css, front-end-developer-tool, front-end-development, frontend, guidelines, hacktoberfest, html, javascript, korean, lists, performance, performance-metrics, reference, resources, web-development
- Homepage: https://frontendchecklist.io
- Size: 142 KB
- Stars: 586
- Watchers: 21
- Forks: 66
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-list - Front-End-Performance-Checklist
README
ย ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ
ย
๐ฎ ๋ ๋น ๋ฅด๊ฒ ์๋ํ๋ ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ
ํ๊ฐ์ง ๋จ์ํ ๊ท์น: "์ฑ๋ฅ์ ๊ณ ๋ คํ ์ค๊ณ์ ์ฝ๋"
ย
ย ย ย
ย
ย
ย ย ย
ย
ย ย
ย ย ย
ย
ย How To Use โข Contributing โข Roadmap โข Product Hunt
๐จ๐ณ
๐ซ๐ท
๐ฐ๐ท
๐ต๐น
๐ท๐บ
๐ฏ๐ต
Other Checklists:
๐ Front-End Checklist โข ๐ Front-End Design Checklist## ๋ชฉ์ฐจ
1. **[HTML](#html)**
2. **[CSS](#css)**
3. **[Fonts](#fonts)**
4. **[Images](#images)**
5. **[JavaScript](#javascript)**
6. **[Server](#server) (in progress)**
7. **[JS Frameworks](#performances-and-js-frameworks) (in progress)**## ์๊ฐ
์ฑ๋ฅ์ ๊ฑฐ๋ํ ์ฃผ์ ์ง๋ง, ํญ์ "๋ฐฑ์๋"๋ "์ด๋๋ฏผ"์๋ง ๊ตญํ๋๋ ์ฃผ์ ๋ ์๋๋๋ค: ํ๋ก ํธ์๋๋ ์ฑ๋ฅ์ ๋ํ ์ฑ ์์ด ์์ต๋๋ค. ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์ ์ต์ํ ์์์ผํ๊ฑฐ๋ ์ฒดํฌํด์ผํ ์์๋ค์ ๋ชฉ๋ก์ด๋ฉฐ, ํ๋ก์ ํธ์ ์ ์ฉํด์ผ ํ๋ ๊ฒ์ ๋๋ค.
### ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
๊ฐ ๊ท์น์ *์* ์ด ๊ท์น์ด ์ค์ํ๊ณ *์ด๋ป๊ฒ* ๊ณ ์น ์ ์๋์ง ์ค๋ช ํ๊ณ ์์ต๋๋ค. ๋ง์ฝ ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด, ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์์ฑ์ํฌ ์ ์๋ ๐ ํด, ๐ ์ํฐํด, ๐น ๋ฏธ๋์ด๋ฅผ ๊ฐ๋ฆฌํค๋ ๋งํฌ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค.
**ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ**์ ๋ชจ๋ ํญ๋ชฉ์ ์ต๊ณ ์ ์ฑ๋ฅ์ ๋ด๋๋ฐ ํ์์ ์ด์ง๋ง, ์ผ๋ถ ๊ท์น์ ์ฐ์ ์์๋ฅผ ์ ํ๋๋ฐ ๋์์ ์ฃผ๊ธฐ ์ํด ์ฐ์ ์์/์ํฅ์ 3๊ฐ์ง ๋ ๋ฒจ๋ก ๊ตฌ๋ถํ์ต๋๋ค:
* ![Low][low]๋ ํด๋น ํญ๋ชฉ์ด ํ๋ก์ ํธ์ **๋ฎ์** ์ฐ์ ์์์ ์ํฅ์ ๊ฐ์ง๋ค๋ ์๋ฏธ์ ๋๋ค.
* ![Medium][medium]์ ํด๋น ํญ๋ชฉ์ด ํ๋ก์ ํธ์ **์ค๊ฐ** ์ ๋์ ์ฐ์ ์์์ ์ํฅ์ ๊ฐ์ง๋ค๋ ์๋ฏธ์ ๋๋ค. ์ด ํญ๋ชฉ์ ๋ํด ๊ณ ๋ฏผํ๋ ๊ฒ์ ํผํด์ ์ ๋ฉ๋๋ค.
* ![High][high]๋ ํด๋น ํญ๋ชฉ์ด ํ๋ก์ ํธ์ **๋์** ์ฐ์ ์์์ ์ํฅ์ ๊ฐ์ง๋ค๋ ์๋ฏธ์ ๋๋ค. ์ด ๊ท์น์ ํผํ ์ ์์ผ๋ฉฐ, ๊ถ์ฅ๋๋ ์์ ์ฌํญ์ ์ ์ฉํด์ผ ํฉ๋๋ค.### ์ฑ๋ฅ ๋๊ตฌ
์น์ฌ์ดํธ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ํฐ๋งํ๊ณ ํ ์คํธํ ๋ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ๋ค์ ๋๋ค:
* ๐ [WebPagetest - Website Performance and Optimization Test](https://www.webpagetest.org/)
* ๐ โ [Dareboost: Website Speed Test and Website Analysis](https://www.dareboost.com/) (use the coupon WPCDD20 for -20%)
* ๐ [Treo: Page Speed Monitoring](https://treo.sh/?ref=perfchecklist)
* ๐ [GTmetrix | Website Speed and Performance Optimization](https://gtmetrix.com/)
* ๐ [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/)
* ๐ [Web.dev](https://web.dev/measure)
* ๐ [Pingdom Website Speed Test](https://tools.pingdom.com)
* ๐ [Make the Web Fasterย | Google Developers](https://developers.google.com/speed/)
* ๐ [Sitespeed.io - Welcome to the wonderful world of Web Performance](https://www.sitespeed.io/)
* ๐ [Calibre](https://calibreapp.com/)
* ๐ [Website Speed Test | Check Web Performance ยป Dotcom-Tools](https://www.dotcom-tools.com/website-speed-test.aspx)
* ๐ [Website and Server Uptime Monitoring - Pingdom](https://www.pingdom.com/product/uptime-monitoring/) ([Free Signup Link](https://www.pingdom.com/free))
* ๐ [Uptime Robot](https://uptimerobot.com)
* ๐ [SpeedCurve: Monitor front-end performance](https://speedcurve.com)
* ๐ [PWMetrics - CLI tool and lib to gather performance metrics](https://github.com/paulirish/pwmetrics)
* ๐ [Varvy - Page speed optimization]( https://varvy.com/pagespeed/)
* ๐ [Lighthouse - Google]( https://developers.google.com/web/tools/lighthouse/#devtools)
* ๐ [Checkbot browser extension - Checks for web performance best practices](https://www.checkbot.io/)
* ๐ [Yellow Lab Tools | Online test to help speeding up heavy web pages](https://yellowlab.tools/)
* ๐ [Speedrank - Web Performance Monitoring](https://speedrank.app/)
* ๐ [DebugBear - Monitor website performance and Lighthouse scores](https://www.debugbear.com/)
* ๐ [packtracker.io - Check your webpack bundle size on every pull request.](https://packtracker.io/)
* ๐ [Exthouse - Analyze the impact of a browser extension on web performance](https://github.com/treosh/exthouse)### ์ฐธ๊ณ ์๋ฃ
* ๐น [The Cost Of JavaScript - YouTube](https://www.youtube.com/watch?v=_bzqF05xsC4) ([text version](https://medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4))
* [AddyOsmani.com - Start Performance Budgeting](https://addyosmani.com/blog/performance-budgets/)
* ๐ [Get Started With Analyzing Runtime Performance ย |ย Google Developers](https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/)
* ๐ [State of the Web | 2018_01_01](https://httparchive.org/reports/state-of-the-web?start=2018_01_01)
* ๐ [Page Weight Doesn't Matter](https://www.speedshop.co/2015/11/05/page-weight-doesnt-matter.html)
* ๐ [Front-End Performance Checklist 2018 [PDF, Apple Pages]](https://www.smashingmagazine.com/2018/01/front-end-performance-checklist-2018-pdf-pages/)
* ๐ [Designing for Performance Weighing Aesthetics and Speed - By Lara Callender Hogan [eBook, Print]](http://designingforperformance.com/index.html)
* ๐ [Varvy - Web performance glossary](https://varvy.com/performance/)
* ๐ [fabkrum/web-performance-resources: Up to date collection of valuable web performance resources](https://github.com/fabkrum/web-performance-resources)
* ๐ [Checkbot - Web Speed Best Practices](https://www.checkbot.io/guide/speed/)
* ๐ [Progressive Tooling - A list of community-built, third-party tools that can be used to improve page performance](https://progressivetooling.com/)---
## HTML
![html]
- [ ] **HTML ์์ถ:** ![medium] HTML ์ฝ๋๋ฅผ ์์ถํ๊ณ , ์ต์ข ํ์ผ์์ ์ฃผ์, ๊ณต๋ฐฑ, ์ค๋ฐ๊ฟ์ ์ ๊ฑฐํฉ๋๋ค.
*์:*
> ๋ถํ์ํ ๊ณต๋ฐฑ, ์ฃผ์, ์์ฑ์ ์ ๊ฑฐํ๋ฉด HTML์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ํ์ด์ง์ ๋ก๋ฉ ์๋๋ฅผ ๋์ผ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์์ ๋ค์ด๋ก๋ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.*์ด๋ป๊ฒ:*
> ๋๋ถ๋ถ์ ํ๋ ์์ํฌ์๋ ์นํ์ด์ง๋ฅผ ์์ถ์ํค๋ ํ๋ฌ๊ทธ์ธ์ด ์์ผ๋ฉฐ, ์ฌ๋ฌ NPM ๋ชจ๋์ ์ฌ์ฉํด ์ด ์์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.* ๐ [HTML minifier | Minify Code](http://minifycode.com/html-minifier/)
* ๐ [Online HTML Compressor](http://refresh-sf.com)
* ๐ [Experimenting with HTML minifier โ Perfection Kills](http://perfectionkills.com/experimenting-with-html-minifier/#use_short_doctype)
ย ย ย
- [ ] **CSS ํ๊ทธ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ทธ ์์ ๋๊ธฐ:** ![high] CSS๊ฐ ํญ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์ ์ ๋ก๋๋๋์ง ํ์ธํ์ธ์.```html
```*์:*
> ์๋ฐ์คํฌ๋ฆฝํธ ์ ์ CSS ํ๊ทธ๋ฅผ ๋๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์๋๋ฅผ ๋์ด๋ ๋ณ๋ ฌ ๋ค์ด๋ก๋๊ฐ ๊ฐ๋ฅํด์ง๋๋ค.*์ด๋ป๊ฒ:*
> ``์ ``์ ``์ด `<script>` ์์ ์๋์ง ํ์ธํ์ธ์.* ๐ [Ordering your styles and scripts for pagespeed](https://varvy.com/pagespeed/style-script-order.html)
- [ ] **iframe ์ต์ํ:** ![high] ๋ค๋ฅธ ๊ธฐ์ ์ ๊ฐ๋ฅ์ฑ์ด ์์ ๋๋ง iframe์ ์ฌ์ฉํ๊ณ , ์ต๋ํ iframe์ ์ฌ์ฉํ์ง ์๋๋ก ํ์ธ์.
- [ ] **Pre-load optimization with prefetch, dns-prefetch and prerender:** ![low] Popular browsers can use directive on `<link>` tag and "rel" attribute with certain keywords to pre-load specific URLs.
*Why:*
> Prefetching allows a browser to silently fetch the necessary resources needed to display content that a user might access in the near future. The browser is able to store these resources in its cache and speed up the way web pages load when they are using different domains for page resources. When a web page has finished loading and the idle time has passed, the browser begins downloading other resources. When a user go in a particular link (already prefetched), the content will be instantly served.*How:*
> โ Ensure that `<link>` is in your `<head>` section.* ๐ [What Is Prefetching and Why Use It](https://www.keycdn.com/support/prefetching)
* ๐ [Prefetching, preloading, prebrowsing](https://css-tricks.com/prefetching-preloading-prebrowsing/)
* ๐ [What is Preload, Prefetch, and Preconnect](https://www.keycdn.com/blog/resource-hints)**[โฌ back to top](#table-of-contents)**
## CSS
![css]
- [ ] **CSS ์์ถ:** ![high] CSS ํ์ผ์ ์์ถํ๊ณ , ์ต์ข ํ์ผ์์ ์ฃผ์, ๊ณต๋ฐฑ, ์ค๋ฐ๊ฟ์ ์ ๊ฑฐํฉ๋๋ค.
*์:*
> CSS ํ์ผ์ ์์ถํ๋ฉด ํด๋ผ์ด์ธํธ์๊ฒ ๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฒ ๋๋ฉฐ, ์ฝํ ์ธ ๊ฐ ๋ ๋นจ๋ฆฌ ๋ก๋๋ฉ๋๋ค. ์ด์์์ CSS ํ์ผ์ ์์ถํ๋ ๊ฒ์ ์ค์ํ ์ผ์ ๋๋ค. ์ด๋ ๋์ญํญ๊ณผ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ค์ด๊ณ ์ ํ๋ ๋ชจ๋ ๋น์ฆ๋์ค์ ์์ด ์ฌ์ฉ์์๊ฒ ๋์์ด ๋ฉ๋๋ค.*์ด๋ป๊ฒ:*
> ๊ฐ๋ฐ์ด๋ ๋น๋ ์ค, ๋๋ ๊ทธ ์ ์ ํ์ผ์ ์๋์ผ๋ก ์์ถํด์ฃผ๋ ํด์ ์ฌ์ฉํ์ธ์.* ๐ [cssnano: A modular minifier based on the PostCSS ecosystem. - cssnano](https://cssnano.co/)
* ๐ [@neutrinojs/style-minify - npm](https://www.npmjs.com/package/@neutrinojs/style-minify)
* ๐ [Online CSS Compressor](http://refresh-sf.com)- [ ] **ํฉ์น๊ธฐ:** ![medium] ์ฌ๋ฌ CSS ํ์ผ๋ค์ ํ๋์ ํ์ผ๋ก ํฉ์น์ธ์. *(HTTP/2 ์์๋ ํญ์ ์ ํจํ์ง ์์ต๋๋ค.)*.
```html
<!-- Not recommended -->
<link rel="stylesheet" href="foo.css"/>
<link rel="stylesheet" href="bar.css"/><!-- Recommended -->
<link rel="stylesheet" href="foobar.css"/>
```*์:*
> ์ฌ์ ํ HTTP/1์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ํ์ผ์ ํฉ์น ํ์๊ฐ ์์ต๋๋ค. ๋ค๋ง ์๋ฒ๊ฐ HTTP/2๋ผ๋ฉด ๊ผญ ๊ทธ๋ ์ง ์์ต๋๋ค. (ํ ์คํธ๋ฅผ ํด๋ด์ผ ํฉ๋๋ค.)*์ด๋ป๊ฒ:*
> ๊ฐ๋ฐ์ด๋ ๋น๋ ์ค, ๋๋ ๊ทธ ์ ์ ํ์ผ์ ํฉ์ณ์ฃผ๋ ์จ๋ผ์ธ ํด, ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ธ์. <br>
โ ๋ฌผ๋ก ํฉ์น๋ ์์ ์ด ํ๋ก์ ํธ๋ฅผ ๋ฐฉํดํ์ง๋ ์๋๋ก ํ์ธ์.* ๐ [HTTP: Optimizing Application Delivery - High Performance Browser Networking (O'Reilly)](https://hpbn.co/optimizing-application-delivery/#optimizing-for-http2)
* ๐ [Performance Best Practices in the HTTP/2 Era](https://deliciousbrains.com/performance-best-practices-http2/)- [ ] **Non-blocking:** ![high] DOM์ด ๋ก๋๋๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์๋๋ก CSS ํ์ผ์ non-blocking ๋์ด์ผ ํฉ๋๋ค.
```html
<link rel="preload" href="global.min.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="global.min.css"></noscript>
```*์:*
> CSS ํ์ผ์ ํ์ด์ง ๋ก๋์ ๋ ๋๋ง์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค. `preload`๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง์ ์ฝํ ์ธ ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ ์ CSS ํ์ผ์ ๋ก๋ํ ์ ์์ต๋๋ค.*์ด๋ป๊ฒ:*
> `rel` ์์ฑ์ ๊ฐ์ `preload`๋ก ์ฃผ๊ณ , `as="style"`๋ฅผ `<link>` ํ๊ทธ์ ๋ฃ์ต๋๋ค.* ๐ [loadCSS by filament group](https://github.com/filamentgroup/loadCSS)
* ๐ [Example of preload CSS using loadCSS](https://gist.github.com/thedaviddias/c24763b82b9991e53928e66a0bafc9bf)
* ๐ [Preloading content with rel="preload"](https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content)
* ๐ [Preload: What Is It Good For? โ Smashing Magazine](https://www.smashingmagazine.com/2016/02/preload-what-is-it-good-for/)- [ ] **Unused CSS:** ![medium] Remove unused CSS selectors.
*์:*
> ์ฌ์ฉํ์ง ์๋ CSS ์ ํ์๋ฅผ ์ง์ฐ๋ฉด ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ผ๋ฉฐ, ๋ก๋ฉ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.*์ด๋ป๊ฒ:*
> โ ๏ธ ํญ์ ์ฌ์ฉํ๋ ค๋ CSS ํ๋ ์์ํฌ์ ์ด๋ฏธ reset / normalize ์ฝ๋๊ฐ ํฌํจ๋์ด์์ง ์์์ง ์ฒดํฌํ์ธ์. ๊ฒฝ์ฐ์ ๋ฐ๋ผ reset / normalize ํ์ผ์ ์๋ ๊ฒ์ด ํ์ํ์ง ์์ ์๋ ์์ต๋๋ค.* ๐ [UnCSS Online](https://uncss-online.com/)
* ๐ [PurifyCSS](https://github.com/purifycss/purifycss)
* ๐ [PurgeCSS](https://github.com/FullHuman/purgecss)
* ๐ [Chrome DevTools Coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)* [ ] **CSS ํฌ๋ฆฌํฐ์ปฌ:** ![high] CSS ํฌ๋ฆฌํฐ์ปฌ (๋๋ "์ด๋ณด๋ธ ๋ ํด๋")์ ํ์ด์ง์ ๋ณด์ด๋ ๋ถ๋ถ์ ๋ ๋๋งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ชจ๋ CSS๋ฅผ ์์งํฉ๋๋ค. ์ด๋ ์ฃผ์ CSS ํธ์ถ ์ , ๊ทธ๋ฆฌ๊ณ `<style>` ์ฌ์ด์ ํ ์ค๋ก ์๋ฒ ๋๋๋ฉ๋๋ค. (๊ฐ๋ฅํ๋ฉด ์์ถ๋ฉ๋๋ค.)
*์:*
> ์ค์ํ CSS๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ๋ฃ์ผ๋ฉด ์๋ฒ ์์ฒญ์ ์ค์ฌ ์น ํ์ด์ง์ ๋ ๋๋ง ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.*์ด๋ป๊ฒ:*
> ์จ๋ผ์ธ ํด์ด๋ Addy Osmani๊ฐ ๊ฐ๋ฐํ ๊ฒ๊ณผ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํด CSS ํฌ๋ฆฌํฐ์ปฌ์ ์์ฑํ์ธ์.
* ๐ [Understanding Critical CSS](https://www.smashingmagazine.com/2015/08/understanding-critical-css/)
* ๐ [Critical by Addy Osmani on GitHub](https://github.com/addyosmani/critical) automates this.
* ๐ [Inlining critical CSS for better web performance | Go Make Things](https://gomakethings.com/inlining-critical-css-for-better-web-performance/)
* ๐ [Critical Path CSS Generator - Prioritize above the fold content :: SiteLocity](https://www.sitelocity.com/critical-path-css-generator)
* ๐ [Reduce the size of the above-the-fold content
](https://developers.google.com/speed/docs/insights/PrioritizeVisibleContent)- [ ] **์ธ๋ถ ๋๋ ์ธ๋ผ์ธ CSS:** ![high] ์ธ๋ถ ๋๋ ์ธ๋ผ์ธ CSS๋ฅผ `` ์์ ๋์ง ๋ง์ธ์. *(HTTP/2์์๋ ์ ํจํ์ง ์์ต๋๋ค.)*
*์:*
> ์ด๋ ๊ฒ ํด์ผํ๋ ์ฒซ ๋ฒ์งธ ์ด์ ๋ **๋์์ธ์์ ์ฝํ ์ธ ๋ฅผ ๋ถ๋ฆฌ**ํ๋ ๊ฒ์ด ์ข์ ๊ดํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ ์ด๋ ์ฝ๋ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ๋ง๋ค๊ณ ์ฌ์ดํธ ์ ๊ทผ์ฑ์ ๋์ด๋ ๋ฐ๋ ๋์์ด ๋ฉ๋๋ค. ์ฑ๋ฅ๊ณผ ๊ด๋ จํด์๋, ์ด๊ฒ์ด HTML ํ์ด์ง์ ํ์ผ ํฌ๊ธฐ์ ๋ก๋ฉ ์๊ฐ์ ์ค์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.*์ด๋ป๊ฒ:*
> ํญ์ ์ธ๋ถ ์คํ์ผ ์ํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ CSS๋ฅผ ``์ ์๋ฒ ๋ํ์ธ์. (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ CSS ์ฑ๋ฅ ๊ท์น์ ๋ฐ๋ฅด์ธ์.)
* ๐ [Observe CSS Best Practices: Avoid CSS Inline Styles](https://www.lifewire.com/avoid-inline-styles-for-css-3466846)- [ ] **์คํ์ผ์ํธ ๋ณต์ก๋ ๋ถ์:** ![high] ์คํ์ผ์ํธ๋ฅผ ๋ถ์ํ๋ ๊ฒ์ ๋ถํ์ํ ์ค๋ณต CSS ์ ํ์๋ฅผ ์ฐพ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
*์:*
> ์ข ์ข ์ค๋ณต, ๋๋ ์ ํจ์ฑ ์๋ฌ๊ฐ CSS ์ฝ๋์์ ๋ฐ์ํ ์ ์๋๋ฐ, CSS ํ์ผ์ ๋ถ์ํ๊ณ ๋ณต์ก์ฑ์ ํด๊ฒฐํ๋ฉด CSS ํ์ผ์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. (๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋นจ๋ฆฌ ์ฝ์ด ๋ค์ด๊ธฐ ๋๋ฌธ์ด์ฃ .)*์ด๋ป๊ฒ:*
> CSS ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํด CSS๋ฅผ ์กฐ์งํด์ผ ํฉ๋๋ค. ์๋์ ๋์ด๋ ์ผ๋ถ ์จ๋ผ์ธ ํด์ด ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ๋ฐ๋ก ์ก๋๋ฐ ๋์์ด ๋ ์๋ ์์ต๋๋ค.* ๐ [TestMyCSS | Optimize and Check CSS Performance](http://www.testmycss.com/)
* ๐ [CSS Stats](https://cssstats.com/)
* ๐ [macbre/analyze-css: CSS selectors complexity and performance analyzer](https://github.com/macbre/analyze-css)
* ๐ [Project Wallace](https://www.projectwallace.com/) is like CSS Stats but stores stats over time so you can track your changes**[โฌ back to top](#table-of-contents)**
## Fonts
![fonts]
* ๐ [A Book Apart, Webfont Handbook](https://abookapart.com/products/webfont-handbook)
- [ ] **์นํฐํธ ํฌ๋งท:** ![medium] ์น ํ๋ก์ ํธ ๋๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ WOFF2๋ฅผ ์ฌ์ฉํ์ธ์.
*์:*
> Check before buying your new font that the provider gives you the WOFF2 format. If you are using a free font, you can always use Font Squirrel to generate all the formats you need.*์ด๋ป๊ฒ:*
> ์๋ก์ด ํฐํธ๋ฅผ ๊ตฌ๋งคํ๊ธฐ ์ ์ ์ ๊ณต์๊ฐ WOFF2 ํฌ๋งท์ ์ ๊ณตํ๋์ง ์ฒดํฌํ์ธ์. ๋ง์ฝ ๋ฌด๋ฃ ํฐํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, Font Squirrel์ ํตํด ํ์ํ ํฌ๋งท์ ์์ฑํ ์ ์์ต๋๋ค.
* ๐ [WOFF 2.0 โ Learn more about the next generation Web Font Format and convert TTF to WOFF2](https://gist.github.com/sergejmueller/cf6b4f2133bcb3e2f64a)
* ๐ [Create Your Own @font-face Kits ยป Font Squirrel](https://www.fontsquirrel.com/tools/webfont-generator)
* ๐ [IcoMoon App - Icon Font, SVG, PDF & PNG Generator](https://icomoon.io/app/)
* ๐ [Using @font-face | CSS-Tricks](https://css-tricks.com/snippets/css/using-font-face/?ref=frontendchecklist)
* ๐ [Can I use... WOFF2](https://caniuse.com/#feat=woff2)- [ ] **ํฐํธ๋ฅผ ๋ ๋นจ๋ฆฌ ๋ก๋ํ๊ธฐ ์ํด `preconnect`๋ฅผ ์ฌ์ฉ:** ![medium]
```html
```*์:*
> ์น ์ฌ์ดํธ์ ์ ์ํ๋ฉด, ๋๋ฐ์ด์ค๋ ์ฌ์ดํธ์ ์์น์ ์ฐ๊ฒฐํด์ผ ํ๋ ์๋ฒ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ DNS ์๋ฒ๋ฅผ ์ฐพ๊ณ , ๋ฆฌ์์ค (ํฐํธ, CSS ํ์ผ...) ์์ง์ด ๋๋๊ธฐ ์ , ์กฐํ๊ฐ ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํด์ผ ํฉ๋๋ค. ์ด๋ prefetches์ preconnects๋ ๋ธ๋ผ์ฐ์ ๊ฐ DNS ์ ๋ณด๋ฅผ ์ฐพ๊ณ ํฐํธ ํ์ผ์ ํธ์คํ ํ๋ ์๋ฒ์ ๋ํ TCP ์ฐ๊ฒฐ์ ํ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํฐํธ ์ ๋ณด์ ์๋ฒ์ ์์ฒญํด์ผ ํ๋ ํฐํธ ํ์ผ์ด ๋ด๊ธด css ํ์ผ์ ํ์ฑํ ๋ ๋ฏธ๋ฆฌ DNS ์ ๋ณด๋ฅผ ํ์ธํ๊ณ , ์ปค๋ฅ์ ํ์ ์๋ ์๋ฒ์ ๋ํ ๊ฐ๋ฐฉํ ์ฐ๊ฒฐ์ ์ค๋นํจ์ผ๋ก์จ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.*์ด๋ป๊ฒ:*
> โ ์นํฐํธ๋ฅผ ์ฌ์ ์์งํ๊ธฐ ์ ์, ์น์ฌ์ดํธ๋ฅผ ํ๊ฐํ๊ธฐ ์ํด ์น ํ์ด์ง ํ ์คํธ๋ฅผ ์ฌ์ฉํ์ธ์.
โ teal colored DNS๋ฅผ ์ฐพ๊ณ ์์ฒญ ์ค์ธ ํธ์คํธ๋ฅผ ํ์ธํ์ธ์.
โ ``์ ๋ ์นํฐํธ๋ฅผ ์ฌ์ ์์งํ๊ณ ํจ๊ป ์ฌ์ ์์งํ ํธ์คํธ๋ค์์ ์ถ๊ฐํ์ธ์.* ๐ [Faster Google Fonts with Preconnect - CDN Planet](https://www.cdnplanet.com/blog/faster-google-webfonts-preconnect/)
* ๐ [Make Your Site Faster with Preconnect Hints | Viget](https://www.viget.com/articles/make-your-site-faster-with-preconnect-hints/)
* ๐ [Ultimate Guide to Browser Hints: Preload, Prefetch, and Preconnect - MachMetrics Speed Blog](https://www.machmetrics.com/speed-blog/guide-to-browser-hints-preload-preconnect-prefetch/)
* ๐ [A Comprehensive Guide to Font Loading Strategiesโzachleat.com](https://www.zachleat.com/web/comprehensive-webfonts/#font-face)
* ๐ [typekit/webfontloader: Web Font Loader gives you added control when using linked fonts via @font-face.](https://github.com/typekit/webfontloader)- [ ] **์น ํฐํธ ํฌ๊ธฐ:** ![medium] ์นํฐํธ ํฌ๊ธฐ๊ฐ 300kb๋ฅผ ๋์ง ์๋๋ก ํ์ธ์. (๋ชจ๋ ํ์ ์์ ํฌํจ)
* ๐ [Font Bytes - Page Weight](https://httparchive.org/reports/page-weight#bytesFont)
- [ ] **ํ๋์ ๋๋ ๋ณด์ด์ง ์๋ ํ ์คํธ ๋ฐฉ์ง:** ![medium] ์นํฐํธ๊ฐ ๋ก๋๋ ๋๊น์ง ํฌ๋ช ํ ํ ์คํธ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์.
* ๐ [`font-display` for the Masses](https://css-tricks.com/font-display-masses/)
* ๐ [CSS font-display: The Future of Font Rendering on the Web](https://www.sitepoint.com/css-font-display-future-font-rendering-web/)**[โฌ back to top](#table-of-contents)**
## Images
![images]
* ๐ [Image Bytes in 2018](https://httparchive.org/reports/page-weight#bytesImg)
* [ ] **์ด๋ฏธ์ง ์ต์ ํ:** ![high] ์ด๋ฏธ์ง๋ ์ต์ ํ๋์ด์ผ ํ๋ฉฐ, ์ต์ข ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๋ ์ ์์ ์์ถ๋์ด์ผ ํฉ๋๋ค.
*์:*
> ์์ถ๋ ์ด๋ฏธ์ง๋ ๋ธ๋ผ์ฐ์ ์์ ๋ ๋นจ๋ฆฌ ๋ก๋๋๊ณ , ๋ณด๋ค ์ ์ ๋ฐ์ดํฐ๋ฅผ ์๋นํฉ๋๋ค.*์ด๋ป๊ฒ:*
> โ ๊ฐ๋ฅํ๋ค๋ฉด CSS3 ํจ๊ณผ๋ฅผ ์ฌ์ฉํ์ธ์. (์์ ์ด๋ฏธ์ง ๋์ )
โ ๊ฐ๋ฅํ๋ฉด, ์ด๋ฏธ์ง์ ์ธ์ฝ๋ฉ๋ ํ ์คํธ ๋์ ํฐํธ๋ฅผ ์ฌ์ฉํ์ธ์.
โ SVG๋ฅผ ์ฌ์ฉํ์ธ์.
โ ํด์ ์ฌ์ฉํ๊ณ ์์ถ ๋ ๋ฒจ์ 85 ๋ฏธ๋ง์ผ๋ก ํ์ธ์.
* ๐ [Image Optimization | Web Fundamentals | Google Developers](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/image-optimization)
* ๐ [Essential Image Optimization - An eBook by Addy Osmani](https://images.guide/)
* ๐ [TinyJPG โ Compress JPEG images intelligently](https://tinyjpg.com/)
* ๐ [Kraken.io - Online Image Optimizer](https://kraken.io/web-interface)
* ๐ [Compressor.io - optimize and compress JPEG photos and PNG images](https://compressor.io/compress)
* ๐ [Cloudinary - Image Analysis Tool](https://webspeedtest.cloudinary.com)
* ๐ [ImageEngine - Image Webpage Loading Test](https://demo.imgeng.in)
* ๐ [SVGOMG - Optimize SVG vector graphics files](https://jakearchibald.github.io/svgomg/)* [ ] **์ด๋ฏธ์ง ํ์:** ![high] ์ ์ ํ ์ด๋ฏธ์ง ํ์์ ์ ํํ์ธ์.
*์:*
> To ensure that your images don't slow your website, choose the format that will correspond to your image. If it's a photo, JPEG is most of the time more appropriate than PNG or GIF. But don't forget to look a the nex-gen formats which can reduce the size of your files. Each image format has pros and cons, it's important to know these to make the best choice possible.*์ด๋ป๊ฒ:*
> โ [Lighthouse](https://developers.google.com/web/tools/lighthouse/)๋ฅผ ์ฌ์ฉํด ์ด๋ฏธ์ง๊ฐ ์ต์ข ์ ์ผ๋ก **์ฐจ์ธ๋ ํฌ๋งท**(JPEG 2000m JPEG XR ๋๋ WebP)์ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ์ธ์.
โ ๋ค๋ฅธ ํฌ๋งท์ ๋น๊ตํ์ธ์. ์ด๋จ ๋๋ PNG8์ ์ฌ์ฉํ๋ ๊ฒ์ด PNG16์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ซ๊ณ , ์ด๋จ ๋๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
* ๐ [Serve Images in Next-Gen Formats ย |ย Tools for Web Developers ย |ย Google Developers](https://developers.google.com/web/tools/lighthouse/audits/webp)
* ๐ [What Is the Right Image Format for Your Website? โ SitePoint](https://www.sitepoint.com/what-is-the-right-image-format-for-your-website/)
* ๐ [PNG8 - The Clear Winner โ SitePoint](https://www.sitepoint.com/png8-the-clear-winner/)
* ๐ [8-bit vs 16-bit - What Color Depth You Should Use And Why It Matters - DIY Photography](https://www.diyphotography.net/8-bit-vs-16-bit-color-depth-use-matters/)- [ ] **๋ฒกํฐ ์ด๋ฏธ์ง vs ๋์คํฐ/๋นํธ๋งต:** ![medium] ๋นํธ๋งต ์ด๋ฏธ์ง๋ณด๋ค๋ ๋ฒกํฐ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ธ์. (๊ฐ๋ฅํ๋ค๋ฉด)
*์:*
> ๋ฒกํฐ ์ด๋ฏธ์ง (SVG)๋ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ณด๋ค ์๊ณ , SVG๋ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์๋ฒฝํ๊ฒ ํฌ๊ธฐ๊ฐ ๋ณํ ์ ์์ต๋๋ค. ๋ฒกํฐ ์ด๋ฏธ์ง๋ CSS์ ์ํด ์์ ๋๊ฑฐ๋ ์์ง์ผ ์ ์์ต๋๋ค.* [ ] **์ด๋ฏธ์ง ํฌ๊ธฐ:** ![medium] ์ต์ข ์ ์ผ๋ก ๋ํ๋๋ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์๋ค๋ฉด ``์ `width`์ `height` ์์ฑ์ ๋ช ์ํ์ธ์.
*์:*
> ๋์ด์ ๋๋น๊ฐ ์ค์ ๋์ด ์์ผ๋ฉด ํ์ด์ง๊ฐ ๋ก๋๋์ ๋ ์ด๋ฏธ์ง๊ฐ ํ์๋กํ๋ ๊ณต๊ฐ์ด ์์ฝ๋ฉ๋๋ค. ํ์ง๋ง, ์ด ์์ฑ์ด ์๋ค๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ์ ์ ์๊ณ , ์ ์ ํ ๊ณต๊ฐ์ ์์ฝํด ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ํ์ด์ง๋ฅผ ๋ก๋ฉํ๋ ์ค์ ๋ ์ด์์์ด ๋ณํ๋ ํ์์ด ๋ฐ์ํฉ๋๋ค. (์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๋ ๋์)* [ ] **Base64 ์ด๋ฏธ์ง ์ฌ์ฉ ์ง์:** ![medium] base64๋ฅผ ํตํด ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์์ง๋ง, ์ด๊ฒ์ด ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ์๋๋๋ค.
* ๐ [Base64 Encoding & Performance, Part 1 and 2 by Harry Roberts](https://csswizardry.com/2017/02/base64-encoding-and-performance/)
* ๐ [A closer look at Base64 image performance โ The Page Not Found Blog](http://www.andygup.net/a-closer-look-at-base64-image-performance/)
* ๐ [When to base64 encode images (and when not to) | David Calhoun](https://www.davidbcalhoun.com/2011/when-to-base64-encode-images-and-when-not-to/)
* ๐ [Base64 encoding images for faster pages | Performance and seo factors](https://varvy.com/pagespeed/base64-images.html)* [ ] **๋ ์ด์ง ๋ก๋ฉ:** ![medium] ์ด๋ฏธ์ง๋ฅผ ๋ ์ด์ง ๋ก๋ฉ์ํค์ธ์. (noscript ํด๋ฐฑ์ด ์ธ์ ๋ ์ ๊ณต๋ฉ๋๋ค.)
*์ด๋ป๊ฒ:*
> โ [Lighthouse](https://developers.google.com/web/tools/lighthouse/)๋ฅผ ์ฌ์ฉํด ์ผ๋ง๋ ๋ง์ **์ด๋ฏธ์ง๊ฐ ์คํ์คํฌ๋ฆฐ๋๋ ์ง** ํ์ธํ์ธ์.
โ ์ด๋ฏธ์ง๋ฅผ ๋ ์ด์ง ๋ก๋์์ผ์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ธ์. Make sure you target offscreen images only.
โ Also make sure to lazyload alternative images shown at mouseover or upon other user actions.* ๐ [verlok/lazyload: GitHub](https://github.com/verlok/lazyload)
* ๐ [aFarkas/lazysizes: GitHub](https://github.com/aFarkas/lazysizes/)
* ๐ [mfranzke/loading-attribute-polyfill: GitHub](https://github.com/mfranzke/loading-attribute-polyfill/)
* ๐ [Lazy Loading Images and Video ย |ย Web Fundamentals ย |ย Google Developers](https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video/)
* ๐ [5 Brilliant Ways to Lazy Load Images For Faster Page Loads - Dynamic Drive Blog](http://blog.dynamicdrive.com/5-brilliant-ways-to-lazy-load-images-for-faster-page-loads/)* [ ] **๋ฐ์ํ ์ด๋ฏธ์ง:** ![medium] ๋์คํ๋ ์ด ํฌ๊ธฐ์ ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ธ์.
*์:*
> ์์ ๋๋ฐ์ด์ค์์๋ ๋ทฐํฌํธ๋ณด๋ค ํฐ ์ด๋ฏธ์ง๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ๋ฒ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.*์ด๋ป๊ฒ:*
> โ ์ํ๋ ํ๊ฒ ๋๋ฐ์ด์ค์ ๋ฐ๋ผ ๋ค๋ฅธ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋์ธ์.
โ `srcset`๊ณผ `picture`๋ฅผ ์ฌ์ฉํด ๊ฐ ์ด๋ฏธ์ง์ ์ฌ๋ฌ ๋ฒ์ ์ ์ ๊ณตํ์ธ์.* ๐ [Responsive images - Learn web development | MDN](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images)
**[โฌ back to top](#table-of-contents)**
## JavaScript
![javascript]
- [ ] **JS ์์ถ:** ![high] JavaScript ํ์ผ์ ์์ถํ๊ณ , ์ต์ข ํ์ผ์์ ์ฃผ์, ๊ณต๋ฐฑ, ์ค๋ฐ๊ฟ์ ์ ๊ฑฐํฉ๋๋ค. *(HTTP/2์์๋ ์ฌ์ ํ ์ ํจํฉ๋๋ค.)*
*์:*
> ๋ถํ์ํ ๊ณต๋ฐฑ, ์ฃผ์, ๊ฐํ์ ์ ๊ฑฐํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ํ์ด์ง์ ๋ก๋ฉ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์์ ๋ค์ด๋ก๋ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.*์ด๋ป๊ฒ:*
> ๊ฐ๋ฐ์ด๋ ๋น๋ ์ค, ๋๋ ๊ทธ ์ ์ ํ์ผ์ ์๋์ผ๋ก ์์ถํด์ฃผ๋ ํด์ ์ฌ์ฉํ์ธ์.* ๐ [uglify-js - npm](https://www.npmjs.com/package/uglify-js)
* ๐ [Online JavaScript Compressor](http://refresh-sf.com)
* ๐ [Short read: How is HTTP/2 different? Should we still minify and concatenate?](https://scaleyourcode.com/blog/article/28)* [ ] **JavaScript ์์ ๋์ง ์๊ธฐ:** ![medium] *(์น์ฌ์ดํธ์์๋ง ์ ํจํฉ๋๋ค.)* ์ฌ๋ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ฐ๋ ์ค๊ฐ์ ๋์ง ๋ง์ธ์. ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ค์ ๊ทธ๋ฃนํํด ์ธ๋ถ ํ์ผ์ด๋ `` ๋๋ ํ์ด์ง์ ๋ง์ง๋ง(`` ์ด์ )์ ๋๋๋ก ํ์ธ์.
*์:*
> ์๋ฐ์คํธ๋ฆฝํธ ์๋ฒ ๋๋ ์ฝ๋๋ฅผ ``์ ๋๋ฉด DOM์ด ๊ตฌ์ฑ๋๋ ๊ณผ์ ์์ ์ฝ๋๊ฐ ๋ก๋๋๊ธฐ ๋๋ฌธ์ ํ์ด์ง ์๋๋ฅผ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ข์ ์ต์ ์ ์ธ๋ถ ํ์ผ์ `async` ๋๋ `defer` ์์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ DOM ๋ก๋ฉ์ ๋ง์ง ์๋๋กํ๋ ๊ฒ์ ๋๋ค. ๋ ๋ค๋ฅธ ์ต์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ``์ ๋๋ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ์๊ฐ ๋ถ์ ์ฝ๋ ๋๋ DOM์ด ์ฃผ์ ์ฒ๋ฆฌ๋ถ๋ถ์ ๋๋ฌํ๊ธฐ ์ ์ ๋ก๋๋์ด์ผ ํ๋ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ ์ ์์ต๋๋ค.*์ด๋ป๊ฒ:*
> ๋ชจ๋ ํ์ผ์ด `async` ๋๋ `defer`๋ฅผ ํตํด ๋ก๋๋๋์ง ํ์ธํ์ธ์. ๊ทธ๋ฆฌ๊ณ ``์ ์ฝ์ ํ ์ฝ๋๋ฅผ ํ๋ช ํ๊ฒ ๊ฒฐ์ ํ์ธ์.* ๐ [11 Tips to Optimize JavaScript and Improve Website Loading Speeds](https://www.upwork.com/hiring/development/11-tips-to-optimize-javascript-and-improve-website-loading-speeds/)
* [ ] **Non-blocking ์๋ฐ์คํฌ๋ฆฝํธ:** ![high] ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํ๊ธฐ ์ํด `async`๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ง์ฐ์ํค๊ธฐ ์ํด `defer` ์์ฑ์ ์ฌ์ฉํ์ธ์.
```html
```*์:*
> ์๋ฐ์คํฌ๋ฆฝํธ๋ HTML ๋ฌธ์์ ํ์ฑ์ ์ฐจ๋จํ๊ธฐ ๋๋ฌธ์, ํ์๋ `` ํ๊ทธ์ ๋๋ฌํ ๋ (ํนํ `<head>` ์์ ์์ ๋) ํ์ฑ์ ๋ฉ์ถ๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ํ์ด์ง์ ์๋จ์ ๋๋ ๊ฒฝ์ฐ `async` ๋๋ `defer`๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๊ทน ๊ถ์ฅ๋ฉ๋๋ค๋ง, ๋ง์ฝ `</body>` ํ๊ทธ ๋ฐ๋ก ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋๋ ๊ฒฝ์ฐ ์ค์๋๊ฐ ๋จ์ด์ง๋๋ค. ํ์ง๋ง ์ธ์ ๋ ์ด ์์ฑ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ์ด์๋ฅผ ํผํ๋ ๊ฒ์ ์ข์ ์ต๊ด์ ๋๋ค.*์ด๋ป๊ฒ:*
> โ `async` (๋ง์ฝ ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์ ์์กดํ์ง ์์ ๊ฒฝ์ฐ) ๋๋ `defer` (๋ง์ฝ ์คํฌ๋ฆฝํธ๊ฐ ๋น๋๊ธฐ ์คํฌ๋ฆฝํธ์ ์์กดํ ๊ฒฝ์ฐ) ์์ฑ์ ์คํฌ๋ฆฝํธ ํ๊ทธ์ ์ถ๊ฐํ์ธ์. <br>
โ ๋ง์ฝ ์คํฌ๋ฆฝํธ๊ฐ ์๋ค๋ฉด, ๋น๋๊ธฐ ์คํฌ๋ฆฝํธ ์์ ์ธ๋ผ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ ์๋ ์์ต๋๋ค.
* ๐ [Remove Render-Blocking JavaScript](https://developers.google.com/speed/docs/insights/BlockingJS)
* ๐ [Defer loading Javascript](https://varvy.com/pagespeed/defer-loading-javascript.html)* [ ] **์ต์ ํ์ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฐ์ดํธ:** ![medium] ํ๋ก์ ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ฉฐ (๋จ์ํ ๊ธฐ๋ฅ์ ์ํด ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์งํฅํ์ธ์.), ์ด๋ค์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ๋ถํ์ํ ๋ฉ์๋๋ค์ด ๋น์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์๋ํ์ง ์๋๋ก ํ์ธ์.
*์:*
> ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ์๋ก์ด ๋ฒ์ ์ ์ต์ ํ๋๊ณ ๋ณด์ ํจ์น๊ฐ ์ ์ฉ๋ฉ๋๋ค. ํ์ด์ง์ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ต์ ํํด์ผ ํ๋ฉฐ, ์น์ฌ์ดํธ๋ ์ฑ์ ๋๋ฆฌ๊ฒ ๋ง๋ค์ง ์๊ธฐ ์ํด ์ค๋๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ง ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
*์ด๋ป๊ฒ:*
> ๋ง์ฝ ํ๋ก์ ํธ๊ฐ NPM ํจํค์ง๋ค์ ์ฌ์ฉํ๋ค๋ฉด, [npm-check](https://www.npmjs.com/package/npm-check)๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ทธ๋ ์ด๋ / ์ ๋ฐ์ดํธํ๋ ๋ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
> [Greenkeeper](https://greenkeeper.io/) can automatically look for your dependencies and suggest an update every time a new version is out.* ๐ [You may not need jQuery](http://youmightnotneedjquery.com/)
* ๐ [Vanilla JavaScript for building powerful web applications](https://plainjs.com/)- [ ] **๋ํ๋์ ํฌ๊ธฐ ์ ํ:** ![low] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ช ํ๊ฒ ์ฌ์ฉํ์ธ์. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ๋๊ฐ์ ๊ธฐ๋ฅ์ ํ์ง๋ง ๋ ๊ฐ๋ฒผ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
*์:*
> 745 000 ํจํค์ง ์ค ์ฌ์ฉํ๋ ค๋ ํจํค์ง ํ๋๋ฅผ [npm](https://www.npmjs.com/)์์ ์ฐพ์ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฐ์ฅ ์ข์ ํจํค์ง๋ฅผ ๊ณจ๋ผ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, MomentJS๋ ๊ต์ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ง๋ง, ๋ง์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค. Day.js๊ฐ ๋ง๋ค์ด์ง ์ด์ ์ฃ . Day.js 2kB vs Moment 16.4kB gz ์ ๋๋ค.*์ด๋ป๊ฒ:*
> ํญ์ ๋ ๊ฐ๋ณ๊ณ ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์ํด ๋น๊ตํ์ธ์. [npm trends](http://www.npmtrends.com/)์ ๊ฐ์ ํด์ ์ด์ฉํด NPM ๋ค์ด๋ก๋ ์๋ฅผ ๋น๊ตํ๊ฑฐ๋ [Bundlephobia](https://bundlephobia.com/)๋ฅผ ํตํด ๋ํ๋์์ ํฌ๊ธฐ๋ฅผ ์ ์ ์์ต๋๋ค.* ๐ [ai/size-limit: Prevent JS libraries bloat. If you accidentally add a massive dependency, Size Limit will throw an error.](https://github.com/ai/size-limit)
* ๐ [webpack-bundle-analyzer - npm](https://www.npmjs.com/package/webpack-bundle-analyzer)
* ๐ [js-dependency-viewer - npm](https://www.npmjs.com/package/js-dependency-viewer)
* ๐ [Size Limit: Make the Web lighter โ Martian Chronicles, Evil Martiansโ team blog](https://evilmartians.com/chronicles/size-limit-make-the-web-lighter)- [ ] **JavaScript ํ๋กํ์ผ๋ง:** ![medium] ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ฒดํฌํ์ธ์. (CSS๋ ๊ฐ์ด ์ฒดํฌํ์ธ์.)
*์:*
> ์๋ฐ์คํฌ๋ฆฝํธ ๋ณต์ก๋๋ ๋ฐํ์ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค. ์ํ์ฑ์ด ์๋ ์ด์๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋งค๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ ๋๋ค.*์ด๋ป๊ฒ:*
> ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์ ํ์๋ผ์ธ ํด์ ์ด์ฉํด ์คํฌ๋ฆฝํธ ์ด๋ฒคํธ๋ฅผ ํ ์คํธํ๊ณ ๋๋ฌด ์ค๋ ์๊ฐ์ ์๋ชจํ๋ ์ด๋ฒคํธ๋ฅผ ์ฐพ์๋ด์ธ์.* ๐ [Speed Up JavaScript Execution ย |ย Tools for Web Developers ย |ย Google Developers](https://developers.google.com/web/tools/chrome-devtools/rendering-tools/js-execution)
* ๐ [JavaScript Profiling With The Chrome Developer Tools โ Smashing Magazine](https://www.smashingmagazine.com/2012/06/javascript-profiling-chrome-developer-tools/)
* ๐ [How to Record Heap Snapshots ย |ย Tools for Web Developers ย |ย Google Developers](https://developers.google.com/web/tools/chrome-devtools/memory-problems/heap-snapshots)
* ๐ [Chapter 22 - Profiling the Frontend - Blackfire](https://blackfire.io/docs/book/22-frontend-profiling)
* ๐ [30 Tips To Improve Javascript Performance](http://www.monitis.com/blog/30-tips-to-improve-javascript-performance/)- [ ] **Use of Service Workers:** ![medium] You are using Service Workers in your PWA to cache data or execute possible heavy tasks without impacting the user experience of your application.
ย ย ย
* ๐ [Service Workers: an Introduction ย |ย Web Fundamentals ย |ย Google Developers](https://developers.google.com/web/fundamentals/primers/service-workers/)
* ๐ [Measuring the Real-world Performance Impact of Service Workers ย |ย Web ย |ย Google Developers](https://developers.google.com/web/showcase/2016/service-worker-perf)
* ๐ [What Are Service Workers and How They Help Improve Performance](https://www.keycdn.com/blog/service-workers/)
* ๐น [How does a service worker work? - YouTube](https://www.youtube.com/watch?v=__xAtWgfzvc)**[โฌ back to top](#table-of-contents)**
## Server
![server-side]
- [ ] **Your website is using HTTPS:** ![high]
*Why:*
> HTTPS is not only for ecommerce websites, but for all websites that are exchanging data. Data shared by a user or data shared to an external entity. Modern browsers today limit functionalities for sites that are not secure. For example: geolocation, push notifications and service workers don't work if your instance is not using HTTPS. And today is much more easy to setup a project with an SSL certificate than it was before (and for free, thanks to [Let's Encrypt](https://letsencrypt.org/)).* ๐ [Why Use HTTPS? | Cloudflare](https://www.cloudflare.com/learning/security/why-use-https/)
* ๐ [Enabling HTTPS Without Sacrificing Your Web Performance - Moz](https://moz.com/blog/enabling-https-without-sacrificing-web-performance)
* ๐ [How HTTPS Affects Website Performance](https://wp-rocket.me/blog/https-affects-website-performance/)
* ๐ [HTTP versus HTTPS versus HTTP2 - The real story | Tune The Web](https://www.tunetheweb.com/blog/http-versus-https-versus-http2/)
* ๐ [HTTP vs HTTPS โ Test them both yourself](https://www.httpvshttps.com/)- [ ] **์นํ์ด์ง ํฌ๊ธฐ < 1500 KB:** ![high] (์ด์์ ์ธ ํฌ๊ธฐ < 500 KB) ํ์ด์ง์ ํฌ๊ธฐ + ๋ฆฌ์์ค๋ฅผ ์ต๋ํ ์ค์ด์ธ์
*์:*
> 500 KB ๋ฏธ๋ง์ด ์ด์์ ์ด์ง๋ง ์น์ ์ํ์ ๋ฐ๋ผ ํฌ๋ก๋ฐ์ดํธ์ ์ค์๊ฐ์ด 1500 KB ์ ๋๋ก ํ์๋ฉ๋๋ค. (๋ชจ๋ฐ์ผ์์๋ ๊ทธ๋ ์ต๋๋ค.) ์ต์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ค๋ฉด ํ๊ฒ ์ฌ์ฉ์, ๋คํธ์ํฌ ์ฐ๊ฒฐ, ๋๋ฐ์ด์ค์ ๋ฐ๋ผ ์ด ํฌ๋ก๋ฐ์ดํธ๋ฅผ ์ต๋ํ ์ค์ฌ์ผ ํฉ๋๋ค.*์ด๋ป๊ฒ:*
> ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ์ ๋ชจ๋ ๊ท์น๋ค์ ๋ฆฌ์์ค์ ์ฝ๋๋ฅผ ์ต๋ํ ์ค์ด๋๋ก ํ๊ณ ์์ต๋๋ค.* ๐ [Page Weight](https://httparchive.org/reports/page-weight#bytesTotal)
* ๐ [What Does My Site Cost?](https://whatdoesmysitecost.com/)
* ๐ [web - Measure full page size in Chrome DevTools - Stack Overflow](https://stackoverflow.com/questions/38239980/measure-full-page-size-in-chrome-devtools)- [ ] **ํ์ด์ง ๋ก๋ ์๊ฐ < 3์ด:** ![high] ํ์ด์ง ๋ก๋ ์๊ฐ์ ์ต๋ํ ์ค์ฌ ์ฌ์ฉ์์๊ฒ ์ฝํ ์ธ ๊ฐ ๋น ๋ฅด๊ฒ ์ ์ก๋๋๋ก ํ์ธ์.
*์:*
> ์น์ฌ์ดํธ๋ ์ฑ์ด ๋นจ๋ผ์ง์๋ก ๋ฐ์ด์ค ์ฆ๊ฐ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ญ๋๋ค. ํํธ ์ฌ์ฉ์๋ ๋ฏธ๋์ ํด๋ผ์ด์ธํธ๋ฅผ ์์ ๊ฐ๋ฅ์ฑ๋ ์ค์ด๋ญ๋๋ค. ์ด ์ฃผ์ ์ ๋ํ ๋ง์ ์ฐ๊ตฌ๊ฐ ์ด๋ฅผ ์ฆ๋ช ํฉ๋๋ค.
*์ด๋ป๊ฒ:*
> [Page Speed Insight](https://developers.google.com/speed/pagespeed/insights/) ๋๋ [WebPageTest](https://www.webpagetest.org/)์ ๊ฐ์ ์จ๋ผ์ธ ํด์ ์ด์ฉํด ๋ฌด์์ด ํ์ด์ง๋ฅผ ๋๋ฆฌ๊ฒ ๋ง๋๋์ง ๋ถ์ํ๊ณ , ํ๋ก ํธ์๋ ์ฒดํฌ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ์ธ์.* ๐ [Compare your mobile site speed](https://www.thinkwithgoogle.com/feature/mobile/)
* ๐ [Test Your Mobile Website Speed and Performance - Think With Google](https://testmysite.thinkwithgoogle.com/intl/en-us)
* ๐ [Average Page Load Times for 2018 - How does yours compare? - MachMetrics Speed Blog](https://www.machmetrics.com/speed-blog/average-page-load-times-websites-2018/)- [ ] **์ฒซ ๋ฒ์งธ ๋ฐ์ดํธ ์๊ฐ(TTFB) < 1.3์ด:** ![high] ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ ์ ๊น์ง ๋๊ธฐํ๋ ์๊ฐ์ ์ต๋ํ ์ค์ด์ธ์.
* ๐ [What is Waiting (TTFB) in DevTools, and what to do about it](https://scaleyourcode.com/blog/article/27)
* ๐ [Monitoring your servers with free tools is easy](https://scaleyourcode.com/blog/article/7)
* ๐ [Time to First Byte (TTFB)](https://varvy.com/pagespeed/ttfb.html)
* ๐ [Global latency testing tool](https://latency.apex.sh)* [ ] **์ฟ ํค ํฌ๊ธฐ:** ![medium] ๋ง์ฝ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๊ฐ ์ฟ ํค๊ฐ 4096 ๋ฐ์ดํธ๋ฅผ ๋์ด์๋ ์ ๋๋ฉฐ, ๋๋ฉ์ธ ๋ค์์ด 20๊ฐ ์ด์์ ์ฟ ํค๋ฅผ ๊ฐ์ ธ์๋ ์ ๋ฉ๋๋ค.
*์:*
> ์ฟ ํค๋ HTTP ํค๋์์ ์น ์๋ฒ์ ๋ธ๋ผ์ฐ์ ์ฌ์ด์ ๊ตํ๋ฉ๋๋ค. ์ฌ์ฉ์์ ์๋ต ์๊ฐ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๊ธฐ ์ํด์๋ ์ฟ ํค์ ํฌ๊ธฐ๋ฅผ ์ต๋ํ ์ค์ฌ์ผ ํฉ๋๋ค.*์ด๋ป๊ฒ:*
> ๋ถํ์ํ ์ฟ ํค๋ฅผ ์ ๊ฑฐํ์ธ์.* ๐ [Cookie specification: RFC 6265](https://tools.ietf.org/html/rfc6265)
* ๐ [Cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
* ๐ [Browser Cookie Limits](http://browsercookielimits.squawky.net/)
* ๐ [Website Performance: Cookies Don't Taste So Good - Monitis Blog](http://www.monitis.com/blog/website-performance-cookies-dont-taste-so-good/)
* ๐ [Google's Web Performance Best Practices #3: Minimize Request Overhead - GlobalDots Blog](https://www.globaldots.com/googles-web-performance-best-practices-3-minimize-request-overhead/)- [ ] **HTTP ์์ฒญ ์ต์ํ:** ![high] ํญ์ ๋ชจ๋ ํ์ผ์ ์์ฒญ์ด ์น์ฌ์ดํธ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์์ ์ธ์ง ํ์ธํ์ธ์.
* ๐ [Combine external CSS](https://varvy.com/pagespeed/combine-external-css.html)
* ๐ [Combine external Javascript](https://varvy.com/pagespeed/combine-external-javascript.html)- [ ] **CDN์ ํตํ ์ด์ ์ ๊ณต:** ![medium] ์ ์ธ๊ณ์ ์ฝํ ์ธ ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ ๊ณตํ๊ธฐ ์ํด CDN์ ์ฌ์ฉํ์ธ์.
* ๐ [10 Tips to Optimize CDN Performance - CDN Planet](https://www.cdnplanet.com/blog/10-tips-optimize-cdn-performance/)
* ๐ [HTTP Caching ย |ย Web Fundamentals ย |ย Google Developers](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching)- [ ] **๋์ผํ ํ๋กํ ์ฝ์์ ํ์ผ ์ ๊ณต:** ![high] Avoid having your website serving files coming from source using HTTP on your website which is using HTTPS for example. If your website is using HTTPS, external files should come from the same protocol.
- [ ] **์ฐ๊ฒฐ ๊ฐ๋ฅํ ํ์ผ ์ ๊ณต:** ![high] ์ฐ๊ฒฐ ๋ถ๊ฐ๋ฅํ ํ์ผ(404)์ ์์ฒญํ์ง ๋ง์ธ์.
* ๐ [How to avoid bad requests](https://varvy.com/pagespeed/avoid-bad-requests.html)- [ ] **์ฌ๋ฐ๋ฅธ HTTP ์บ์ ํค๋ ์ค์ :** ![high] ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ์ฌ์ด ๋น์ฉ์ด ํฐ ์๋ณต์ ํผํ๋๋ก HTTP ํค๋๋ฅผ ์ค์ ํ์ธ์.
* ๐ [Using cache-control for browser caching](https://varvy.com/pagespeed/cache-control.html)- [ ] **GZIP / Brotli ์์ถ ํ์ฑํ:** ![high] Use a compression method such as Gzip or Brotli to reduce the size of your JavaScript files. With a smaller sizes file, users will be able to download the asset faster, resulting in improved performance.
* ๐ [Check GZIP compression](https://checkgzipcompression.com/)
* ๐ [Check Brotli Compression](https://tools.keycdn.com/brotli-test)
* ๐ [Can I use... Brotli](https://caniuse.com/#feat=brotli)**[โฌ back to top](#table-of-contents)**
---
## Performances and JS Frameworks### Angular
* ๐ [Angular Performance Checklist](https://github.com/mgechev/angular-performance-checklist)### React
* ๐ [Optimizing Performance - React](https://reactjs.org/docs/optimizing-performance.html)
* ๐ [React image manipulation | Cloudinary](https://cloudinary.com/documentation/react_image_manipulation)
* ๐ [Debugging React performance with React 16 and Chrome Devtools.](https://building.calibreapp.com/debugging-react-performance-with-react-16-and-chrome-devtools-c90698a522ad)
* ๐ [Build Performant - React](https://web.dev/react/)### Vue
* ๐ [Vue - Useful Links|Style Guide and Performance](https://learn-vuejs.github.io/vue-patterns/useful-links/)## Performances and CMS
### WordPress
* ๐ [Test Your Website Speed | WordPress Hosting by @WPEngine](https://wpengine.com/speed-tool/)
#### Articles
* ๐ [19 Tips to Speed Up WordPress Performance (Updated)](https://www.wpbeginner.com/wordpress-performance-speed/)
* ๐ [Speed Up Your WordPress - How to Save Images Optimized for Web](https://www.wpbeginner.com/beginners-guide/speed-wordpress-save-images-optimized-web/)#### Plugins recommended
* ๐ [Caching Plugin for WordPress - Speed up your website with WP Rocket](https://wp-rocket.me/)
* ๐ [WP-Sweep | WordPress.org](https://wordpress.org/plugins/wp-sweep/)
* ๐ [Imagify Image Optimizer | WordPress.org](https://wordpress.org/plugins/imagify/)### Vue
## Performances and CMS
### WordPress
#### Articles
* ๐ [19 Tips to Speed Up WordPress Performance (Updated)](https://www.wpbeginner.com/wordpress-performance-speed/)
* ๐ [Speed Up Your WordPress - How to Save Images Optimized for Web](https://www.wpbeginner.com/beginners-guide/speed-wordpress-save-images-optimized-web/)#### Plugins recommended
---
## Translations
ํ๋ก ํธ ์๋ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ๊ฐ ๋ค๋ฅธ ์ธ์ด๋ก ์ฝํ๊ธธ ๋ฐ๋๋๋ค! ์ปจํธ๋ฆฌ๋ทฐ์ ์ ๋ง์ค์ด์ง ๋ง์์ฃผ์ธ์!
* ๐ต๐น Portuguese: [fernandofawkes/Front-End-Performance-Checklist](https://github.com/fernandofawkes/Front-End-Performance-Checklist)
* ๐จ๐ณ Chinese: [JohnsenZhou/Front-End-Performance-Checklist](https://github.com/JohnsenZhou/Front-End-Performance-Checklist)
* ๐ท๐บ Russian: [lex111/Front-End-Performance-Checklist](https://github.com/lex111/Front-End-Performance-Checklist)
* ๐ซ๐ท French: [WilliamDASILVA/Front-End-Performance-Checklist](https://github.com/WilliamDASILVA/Front-End-Performance-Checklist)
* ๐ฐ๐ท Korean: [ParkSB/Front-End-Performance-Checklist](https://github.com/ParkSB/Front-End-Performance-Checklist)* ๐ต๐น Portuguese: [fernandofawkes/Front-End-Performance-Checklist](https://github.com/fernandofawkes/Front-End-Performance-Checklist)
* ๐จ๐ณ Chinese: [JohnsenZhou/Front-End-Performance-Checklist](https://github.com/JohnsenZhou/Front-End-Performance-Checklist)
* ๐ท๐บ Russian: [lex111/Front-End-Performance-Checklist](https://github.com/lex111/Front-End-Performance-Checklist)
* ๐ซ๐ท French: [WilliamDASILVA/Front-End-Performance-Checklist](https://github.com/WilliamDASILVA/Front-End-Performance-Checklist)
* ๐ฐ๐ท Korean: [ParkSB/Front-End-Performance-Checklist](https://github.com/ParkSB/Front-End-Performance-Checklist)
* ๐ช๐ธ Spanish: [dagerzuga/Front-End-Performance-Checklist](https://github.com/dagerzuga/Front-End-Performance-Checklist)
* ๐ป๐ฎ Vietnamese : [huynhan147/Front-End-Performance-Checklist](https://github.com/huynhan147/FrontEnd-Performance-Checklist)
* ๐ฏ๐ต Japanese: [GameWith/Front-End-Performance-Checklist](https://github.com/GameWith/Front-End-Performance-Checklist)
* ๐ต๐ฑ Polish: [mbiesiad/Front-End-Performance-Checklist](https://github.com/mbiesiad/Front-End-Performance-Checklist)## Contributing
**์ด์๋ฅผ ์ด๊ฑฐ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด ๋ณ๊ฒฝ ์ฌํญ์ด๋ ์ถ๊ฐ์ ์ ์ ์ํ์ธ์.**
## Support
์ง๋ฌธ์ด๋ ์ ์์ด ์๋ค๋ฉด Gitter๋ ํธ์ํฐ ์ฌ์ฉ์ ๋ง์ค์ด์ง ๋ง์ธ์:
* [Chat on Discord](https://discord.gg/btHQRkm)
* [Facebook](https://www.facebook.com/frontendchecklist/)
* [Twitter](https://twitter.com/thedaviddias)## Author
**Build with โค๏ธ by [David Dias](https://github.com/thedaviddias)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute]](.github/CONTRIBUTING.md).
<a href="https://github.com/thedaviddias/Front-End-Performance-Checklist/graphs/contributors">
<img src="https://opencollective.com/front-end-checklist/contributors.svg?width=890" />
</a>## Backers
Thank you to all our backers! ๐ [[Become a backer](https://opencollective.com/front-end-checklist#backer)]
<a href="https://opencollective.com/front-end-checklist#backers" target="_blank"><img src="https://opencollective.com/front-end-checklist/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/front-end-checklist#sponsor)]
<a href="https://opencollective.com/front-end-checklist/sponsor/0/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/1/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/2/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/3/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/4/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/5/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/6/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/7/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/8/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/front-end-checklist/sponsor/9/website" target="_blank"><img src="https://opencollective.com/front-end-checklist/sponsor/9/avatar.svg"></a>
## License[MIT](LICENSE)
All icons are provided by [Icons8](https://icons8.com/)
**[โฌ back to top](#table-of-contents)**
[logo]: images/logo-front-end-performance-checklist.jpg
[html]: images/html.png
[css]: images/css.png
[fonts]: images/fonts.png
[images]: images/images.png
[javascript]: images/javascript.png
[server-side]: images/server-side.png[low]: images/priority/low.svg
[medium]: images/priority/medium.svg
[high]: images/priority/high.svg