ํธ์คํ ๋ AMP ํ์ด์ง ์ต์ ํ
Important: this documentation is not applicable to your currently selected format ads!
์ด ๊ฐ์ด๋๋ ์น๋ง์คํฐ๋ฅผ ์ํด ํธ์คํ ๋ AMP ์น์ฌ์ดํธ๋ฅผ ์ต์ ํํ๋ ํ๊ณผ ์ค๋ช ์ ์ ๊ณตํฉ๋๋ค.
AMP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น ๋ฅด์ง ์๋์?
AMP ๋ฐํ์์ ์๋ ํฅ์์ ์ํด ์ต์ ํ๋ฉ๋๋ค. ๋ํ AMP ์บ์๊ฐ AMP ํ์ด์ง๋ฅผ ์ง์ํ ๊ฒฝ์ฐ ํด๋น ํ์ด์ง๋ ์ ์ ์ผ๋ก ์ต์ ํ๋์ด ์ต์์ ๋ก๋ฉ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ๋ชจ๋ฐ์ผ์ Google ๊ฒ์์ ํตํด AMP ํ์ด์ง๋ก ์ ์ ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก AMP ์บ์๊ฐ ํ์ด์ง๋ฅผ ์ง์ํฉ๋๋ค.
ํ์ง๋ง ํญ์ AMP ์บ์๊ฐ AMP ํ์ด์ง๋ฅผ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค. ๋ค๋ฅธ ํธ๋ํฝ ์์ค์ ๊ฒฝ์ฐ ์น์ฌ์ดํธ๋ ์์ฒด ์๋ฒ์์ AMP ํ์ด์ง๋ฅผ ํ์ํ๋๋ก ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ํํ ์ฌ์ฉ ์ฌ๋ก๋ ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ์ฌ์ดํธ๋ก ์ด๋ํ๋ tasty.co์ฒ๋ผ ์ ์ ์ผ๋ก AMP๋ก ์์ฑ๋ ์ฌ์ดํธ์ ๋๋ค. ๋ ๋ค๋ฅธ ํธ๋ํฝ ์์ค๋ Twitter์ ๋๋ค. Twitter๋ ํ์ค ๋ชจ๋ฐ์ผ ๋ฒ์ ์ ์ ๊ณตํ๋ ๋์ AMP ํ์ด์ง ์ฐ๊ฒฐ์ ์์ํ์ต๋๋ค. ์ฆ, ์ฌ์ฉ์๊ฐ Twitter ๋ชจ๋ฐ์ผ ์ฑ์ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ๋งํฌ๊ฐ ๊ณ ์ ์๋ณธ ํ์ด์ง์ AMP ๋ฒ์ ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค(์ ๊ณต๋ ๊ฒฝ์ฐ).
๊ฒฐ๊ณผ์ ์ผ๋ก AMP ํ์ด์ง๊ฐ ํญ์ AMP ์บ์๋ฅผ ํตํด์๋ง ์ง์๋๋ค๊ณ ํ์ ํ ์ ์์ต๋๋ค. ์์ฒด ์๋ฒ์์ AMP ํ์ด์ง๋ฅผ ์ง์ํ ๊ฒฝ์ฐ AMP ํ์ด์ง์์ ์ต์ ์ ๋ก๋ฉ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
AMP ํ์ด์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ก๋๋์ง๋ง ์ฑ๋ฅ ์ต์ ํ ๊ธฐ์ ์ ์ถ๊ฐ๋ก ๊ตฌํํ์ฌ ๋ธ๋ผ์ฐ์ ์์ AMP ํ์ด์ง๋ฅผ ๋์ฑ ๋น ๋ฅด๊ฒ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋์์๋ AMP ํ์ด์ง๋ฅผ ๊ฒ์ํ ๋ ๊ณ ๋ คํด์ผ ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ต์ ํ ๊ธฐ๋ฅ์ ์ค๋ช ํฉ๋๋ค. ํ์ง๋ง ๊ฐ์ด๋๋ฅผ ์ฝ๊ธฐ ์ ๊ธฐ๋ณธ ์น ์ฑ๋ฅ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํ๋์ง ํ์ธํ์ธ์. ํนํ ์ด๋ฏธ์ง ์ต์ ํ๋ ๋ก๋ฉ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ต์ ํ ๊ธฐ์ ์ ์ ์ฉํ ์ ์์ต๋๋ค.
- ์ต์ ํ๋ AMP ๋ฐํ์ ๋ก๋ฉ
- ์ฌ์ ๋ก๋๋ ํ์ด๋ก ์ด๋ฏธ์ง(์ด๋ฏธ์ง ํฌ๊ธฐ/์์ฒด ์ธ์ฝ๋ฉ์ ๋ณ๊ฒฝ๋์ง ์์)
- ์ฌ์ฉ์ ์ง์ ๊ธ๊ผด ์ต์ ํ(์ด ์ฌ๋ก์ ๊ฒฝ์ฐ Google ํฐํธ)
"The Scenic" ํ ํ๋ฆฟ์ 3G ์ฐ๊ฒฐ ์ 2์ด ๋น ๋ฅด๊ฒ ๋ก๋๋ฉ๋๋ค.
์ธ๋ถ ์ฌํญ์ ์๋ตํ๋ ค๋ฉด ์ต์ ํ๋ ์ฌ์ฉ์ ์ง์ AMP ํ์ด์ง๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ AMP ์์ฉ๊ตฌ ์์ฑ๊ธฐ๋ฅผ ํ์ธํ์ธ์.
AMP ๋ฐํ์ ๋ก๋ฉ ์ต์ ํ
AMP๋ ์ด๋ฏธ <head> ์น์
์์ ํ์ฉ๋๋ ๋งํฌ์
์ ์๋นํ ์ ํ์ ๋๊ณ ์์ง๋ง ๊ทธ๋ผ์๋ ์ต์ ํ ์ต์
์ ์กด์ฌํฉ๋๋ค. ํต์ฌ์ <head> ์น์
์์ ๋ ๋๋ง ์ฐจ๋จ ์คํฌ๋ฆฝํธ ๋ฐ ์ฌ์ฉ์ ์ง์ ๊ธ๊ผด์ด ์ต๋ํ ๋น ๋ฅด๊ฒ ๋ก๋๋๋๋ก ๊ตฌ์ฑํ๋ ๊ฒ์
๋๋ค.
AMP ํ์ด์ง์ <head> ์น์
์ ๊ถ์ฅ๋๋ ์ ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<!doctype html> <html โก lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <meta name="description" content="This is the AMP Boilerplate."> <link rel="preload" as="script" href="https://cdn.ampproject.org/v0.js"> <link rel="preload" as="script" href="https://cdn.ampproject.org/v0/amp-experiment-0.1.js"> <link rel="preconnect dns-prefetch" href="https://fonts.gstatic.com/" crossorigin> <script async src="https://cdn.ampproject.org/v0.js"></script> <script async custom-element="amp-experiment" src="https://cdn.ampproject.org/v0/amp-experiment-0.1.js"></script> <!-- Import other AMP Extensions here --> <style amp-custom> /* Add your styles here */ </style> <link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet"> <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible.selected}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible.selected}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible.selected}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible.selected}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible.selected}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript> <link rel="canonical" href="."> <title>My AMP Page</title> </head> <body> <h1>Hello World</h1> </body> </html>
ํ ๋จ๊ณ์ฉ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
-
์ฒซ ๋ฒ์งธ ํ๊ทธ๋
meta charsetํ๊ทธ์ฌ์ผ ํ๋ฉฐ ๊ทธ๋ค์์๋ ๋จ์metaํ๊ทธ๋ฅผ ๋ฐฐ์นํด์ผ ํฉ๋๋ค. -
๋ค์์ผ๋ก
<link as=script href=https://cdn.ampproject.org/v0.js rel=preload>๋ฅผ ํ์ฉํด AMP ๋ฐํ์v0.js<script>ํ๊ทธ๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํฉ๋๋ค. AMP ๋ฐํ์์ด ๋ก๋๋ ๋๊น์ง AMP ์์ฉ๊ตฌ๋body { visibility:hidden }๋ฅผ ํตํด ๋ฌธ์๋ฅผ ์จ๊น ์ฒ๋ฆฌํ๋ฏ๋ก AMP ๋ฐํ์์ ์ต๋ํ ๋นจ๋ฆฌ ๋ค์ด๋ก๋๋ฅผ ์์ํด์ผ ํฉ๋๋ค. AMP ๋ฐํ์์ ๋ฏธ๋ฆฌ ๋ก๋ํ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์์ ์ฐ์ ์์๊ฐ ๋ ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๋๋ก ์ง์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด server-side-rendering์ ์ฐธ์กฐํ์ธ์. {amp-img6} {/amp-img6} -
ํ์ด์ง์ ๋ ๋๋ง ์ง์ฐ ํ์ฅ์๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ (์: amp-experiment, amp-dynamic-css-classes, amp-story) ํ์ด์ง ๋ ๋๋ง ์ AMP ๋ฐํ์์ด ํด๋น ํ์ฅ์๋ฅผ ํ์๋ก ํ๋ฏ๋ก ํ์ฅ์๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํฉ๋๋ค.
<link as="script" rel="preload" href="https://cdn.ampproject.org/v0/amp-custom-css-0.1.js"> <link as="script" rel="preload" href="https://cdn.ampproject.org/v0/amp-experiment-0.1.js"> <link as="script" rel="preload" href="https://cdn.ampproject.org/v0/story-1.0.js">
- ์ฌ์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ฌ ์ ์ฒด ์ถ์ฒ URL์ ๋ฏธ๋ฆฌ ์ ์ ์๋ ๋ค๋ฅธ ์ถ์ฒ์ ๋ํ ์ฐ๊ฒฐ ์๋๋ฅผ ๊ฐ์ ํฉ๋๋ค(์: Google Fonts ์ฌ์ฉ ์).
<link rel="preconnect dns-prefetch" href="https://fonts.gstatic.com/" crossorigin>
- AMP ๋ฐํ์์๋ก๋ํฉ๋๋ค:
<script async src="https://cdn.ampproject.org/v0.js"></script>
- ๋ ๋๋ง ์ง์ฐ ํ์ฅ์์ ๋ํ
<script>ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค(์:amp-experimentamp-dynamic-css-classes๋ฐamp-story - ๋จ์ ํ์ฅ์์ ๋ํ
<script>ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค(์:amp-bind...). ์ด๋ฌํ ํ์ฅ์๋ ๋ ๋๋ง ์ง์ฐ ํ์ฅ์๊ฐ ์๋๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ด๊ธฐ ๋ ๋๋ง ์ ์ค์ํ ๋์ญํญ์ ์ฐจ์งํ ์ ์์ผ๋ฏ๋ก ์ฌ์ ๋ก๋๋์ด์ ์ ๋ฉ๋๋ค. <style amp-custom>ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ์คํ์ผ์ ์ง์ ํฉ๋๋ค.<head>์น์ ์์ ํ์ฉ๋ ๊ธฐํ ํ๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ํนํ ์ธ๋ถ ๊ธ๊ผด์ ๋ ๋๋ง์ ์ฐจ๋จํ๋ฏ๋ก ๋ง์ง๋ง์ ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค.- ๋ง์ง๋ง์ผ๋ก AMP ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ง์ ํฉ๋๋ค. ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ง์ ํ๋ฉด ์ฌ์ฉ์ ์ง์ ์คํ์ผ์ด ์๊ธฐ์น ์๊ฒ ์์ฉ๊ตฌ CSS ๊ท์น์ ์ฌ์ ์ํ์ง ์๋๋ก ๋ฐฉ์งํ ์ ์์ต๋๋ค.
ํ์ด๋ก ์ด๋ฏธ์ง ์ฌ์ ๋ก๋
AMP HTML๋ ์์ฒด ์ด๋ฏธ์ง ์์์ธ amp-img๋ฅผ ์ฌ์ฉํฉ๋๋ค. amp-img์๋ ๊ธฐ์กด HTML img ํ๊ทธ๋ณด๋ค ๋ง์ ์ฅ์ ์ด ์์ง๋ง ํ ๊ฐ์ง ๋จ์ ์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋ ์์ ์ ์ AMP ๋ฐํ์์ด ๋ก๋๋์ด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ์ ํ ํ์ด์ง์ ํ์ด๋ก ์ด๋ฏธ์ง์ ๊ฐ์ ์ผ๋ถ ์ด๋ฏธ์ง๋ ์ต๋ํ ๋น ๋ฅด๊ฒ ๋ก๋ฉ๋๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋๋ฅผ ์ต๋ํ ๋นจ๋ฆฌ ์์ํ๊ณ AMP ๋ฐํ์์ด ๋ก๋๋๊ธธ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๋๋ก ์ด๋ฏธ์ง๋ฅผ ์ฌ์ ๋ก๋ํ๋ ๊ฒ์ด ์ต์ ์
๋๋ค.
<head> <link rel="preload" href="/images/elephants.png" as="image"> </head> <body> ... <amp-img width="404" height="720" layout="responsive" src="/images/elephants.png" alt="..." > </amp-img> </body>
ํ์ง๋ง ํ๋ฉด ๋๋น์ ๋ฐ๋ผ ๋ฐ์ํ ๋ ์ด์์์ ๋ค๋ฅธ ํ์ด๋ก ์ด๋ฏธ์ง๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์คํฌํฑ์๋ ๋์ ์ด๋ฏธ์ง๊ฐ ๋ชจ๋ฐ์ผ์๋ ์ข์ ์ด๋ฏธ์ง๊ฐ ์๊ตฌ๋ฉ๋๋ค.
<amp-img width="404" height="720" alt="..." layout="responsive" src="/images/elephants_narrow.png" media="(max-width: 415px)"> </amp-img> <amp-img height="720" alt="..." layout="fixed-height" src="/images/elephants_wide.jpg" media="(min-width: 416px)"> </amp-img>
๋คํํ link rel=preload๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ์ง์ํ๋ฏ๋ก ์ฌ์ ๋ก๋ ๊ตฌ๋ฌธ์์ ๋ค์๊ณผ ๊ฐ์ด ๋์ผํ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
<link rel="preload" as="image" href="/images/elephants_narrow.png" media="(max-width: 415px)"> <link rel="preload" as="image" href="/images/elephants_wide.jpg" media="(min-width: 416px)">
๋์ผํ ์ ๊ทผ ๋ฐฉ์์ amp-video ํฌ์คํฐ ์ด๋ฏธ์ง์๋ ์ ํฉํฉ๋๋ค:
<link rel="preload" href="/images/poster.jpg" as="image"> ... <amp-video width="480" height="270" src="elephant.mp4" poster="/images/poster.jpg" layout="responsive"> ... </amp-video>
๋ธ๋ผ์ฐ์ ์์ ํ๋ฉด ๋๋น๋ฅผ ํ์ธํ๋ ๋ฐ ๋ทฐํฌํธ ์น์๊ฐ ํ์ํ๋ฏ๋ก ๋ทฐํฌํธ ์ ์ธ ๋ค์์ ์ฌ์ ๋ก๋ ๊ตฌ๋ฌธ์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
<meta name="viewport" content="width=device-width"> ... <link rel="preload" media="(max-width: 415px)" ...>
์๋น์ค ์์ปค ์ฌ์ฉ ๊ณ ๋ คํ๊ธฐ
์ด์ ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์๋น์ค ์์ปค๋ฅผ ์ง์ํ๋ฏ๋ก ์ฌ์ดํธ์ ์๋น์ค ์์ปค๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ ํฉ์ฑ์ ํ๊ฐํ๋ ํธ์ด ์ข์ต๋๋ค.
์์ ์ ์ด๋ฉฐ ๋น ๋ฅธ ํ์์ ์ ํฉํ ๋ ๊ฐ์ง ์ข ๋ฅ์ ์ํคํ ์ฒ ํจํด์ด ์์ต๋๋ค.
- ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ : App Shell ๋ชจ๋ธ(AMP ์ปจํ ์คํธ์์๋ AMP-in-PWA๋ก ์ง์นญ). ์ด ํจํด์ ์ฌ์ฉํ๋ ค๋ฉด ์๋น์ค ์์ปค๋ฅผ ํตํด AMP ๋ฌธ์๋ฅผ ์ฑ ์ ๊ธฐ๋ฐ PWA ํ๊ฒฝ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค.
- ๋ฉํฐ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ : ๋ณตํฉ ๋ฆฌ์์ค ์คํธ๋ฆฌ๋ฐ. ์๋น์ค ์์ปค๋ ์ ์ ํค๋ ๋ฐ ํธํฐ๋ฅผ ์บ์ฑํ๊ณ ์ฝํ ์ธ ๋ก๋ฉ ์ค ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉํด ์บ์๋ ๋ถ๋ถ ์๋ต์ ์ฆ์ ๋ฐํํฉ๋๋ค.
์ด ํจํด ์ค ์ด๋ ๊ฒ๋ ์ฌ์ฉ๋์ง ์์ ๊ฒฝ์ฐ ์ ์ฒด ์ฌ์ดํธ๋ฅผ ์บ์ฑํ ์ ์์ด(์์ฃผ ๊ท๋ชจ๊ฐ ์์ ์ฌ์ดํธ์๋ง ์ ํฉ) ์๋น์ค ์์ปค๊ฐ ๋ถ์ ์ ์ฑ๋ฅ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ต์ ์ ๋๋ค.
ํ์ง๋ง ํ ํ๋ฉด์์ ์ค์น ๊ฐ๋ฅํ ์น์ฌ์ดํธ๋ฅผ ๊ตฌํํ๊ฑฐ๋ ์คํ๋ผ์ธ ๊ฒฝํ์ ์ ๊ณตํ๊ณ ์ถ๋ค๋ฉด ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๋ด๋น๊ฒ์ด์ ์ฌ์ ๋ก๋๋ฅผ ํตํด ์ ์ฌ์ ์๋ ์ ํ๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค(์ฐธ๊ณ : ํ์ฌ ๋ด๋น๊ฒ์ด์ ์ฌ์ ๋ก๋๋ Chrome์์๋ง ์ง์๋ฉ๋๋ค).
AMP ์น์ฌ์ดํธ์์ ์๋น์ค ์์ปค๊ฐ ์ฌ์ฉ๋ ๊ฒฝ์ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- AMP ๋ฐํ์ ๋ฐ ํ์ฅ์ ์ฌ์ ์บ์ฑ(์:
amp-carousel). - ํ์ด์ง ๋๋ถ๋ถ์์ ์ฌ์ฉ๋๋ ๋ก๊ณ , ๊ธ๊ผด ๋ฐ ๊ธฐํ ์ ์ ์ฝํ ์ธ ์ฌ์ ์บ์ฑ.
- ์บ์ ์ฐ์ ์ ๋ต์ ์ฌ์ฉํ ๋ก๊ณ , ๊ธ๊ผด ๋ฐ ์ด๋ฏธ์ง ์ง์.
- stale-while-revalidate ์ ๋ต์ ์ฌ์ฉํ AMP ๋ฐํ์ ๋ฐ ํ์ฅ์ ์ง์.
- ๋ด๋น๊ฒ์ด์ ์์ฒญ์ ๋คํธ์ํฌ ์ฐ์ ์ ๋ต ์ฌ์ฉ ์ ๋ด๋น๊ฒ์ด์ ์ฌ์ ๋ก๋ ํ์ธ.
AMP ์ฌ์ดํธ์์ ์๋น์ค ์์ปค ์ฌ์ฉ์ ์์ํ ๋ฐฉ๋ฒ์ ๋ชจ์ ์ค์ด๋ผ๋ฉด ๋ค์ ์ํ์ ํตํด ๋ชจ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ตฌํํ ์๋น์ค ์์ปค๋ฅผ ํ์ธํด๋ณด์ธ์.
์ฌ์ ์บ์ฑ์ ์บ์๋ AMP ํ์ด์ง์์ ๊ณ ์ ์๋ณธ์ ๋น AMP ํ์ด์ง๋ก์ ์ ํ๋ง์ด ์๋ ์บ์๋ AMP ํ์ด์ง์์ ๊ณ ์ ์๋ณธ์ AMP ํ์ด์ง๋ก ์ ํ๊ณผ๋ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทธ ์ด์ ๋ AMP ์บ์๊ฐ AMP ๋ฐํ์ URL์ ๋ถ๋ณ URL์์ ์ต์ ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ผ๋ก ์ฌ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://cdn.ampproject.org/v0.js -> https://cdn.ampproject.org/rtv/001515617716922/v0.js.
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ณ ์ ์๋ณธ์์ ์ง์๋๋ AMP ํ์ด์ง์์ ๋ธ๋ผ์ฐ์ ์บ์ฑ์ด ์ ์ฉํ์ง ์์ผ๋ฉฐ ์ด๋ฐ ๊ฒฝ์ฐ (๋ฒ์ ์ด ์๋) AMP ๋ฐํ์์ ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฒ์ ์ด ์๋ AMP ๋ฐํ์์ ์ฌ์ ์บ์ฑํ์ฌ ์ ํ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. AMP ์บ์๊ฐ AMP ๋ฐํ์ URL์ ๋ฒ์ ํํ๋ ์ด์ ๋ฅผ ์์ธํ ์์๋ณด๋ ค๋ฉด ์ด ๋ฌธ์๋ฅผ ์ฝ์ด๋ณด์ธ์.
์ฌ์ฉ์ ์ง์ ๊ธ๊ผด ์ต์ ํ
AMP๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธ๊ผด ๋ก๋ฉ์ ์ต์ ํํ๋ ๋ฐ ์ํํ ์ ์๋ ๋ช ๊ฐ์ง ์์ ์ด ์์ต๋๋ค(์ฌ์ค ๊ทธ ์ค ๋๋ค์๋ AMP์๋ง ํ์ ๋์ง ์์ต๋๋ค):
- ๊ฐ๋ฅํ๋ค๋ฉด font-display: optional์ ์ฌ์ฉํ์ธ์. ์ด๋ฏธ ์บ์์ ํฌํจ๋ ๊ธ๊ผด๋ง์ ์ฌ์ฉํ๊ณ ์ฌ์ฉ์ ์ง์ ๊ธ๊ผด์ด ๋ก๋๋์ง ์์ ๊ฒฝ์ฐ ์์คํ ๊ธ๊ผด๋ก ํด๋ฐฑํฉ๋๋ค.
- ์น ๊ธ๊ผด์ ์ต์ ํํฉ๋๋ค(์: WOFF2๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์ ์ง์ ๊ธ๊ผด ์ง์).
- ์ฌ์ฉ์ ์ ์ ๊ธ๊ผด ๋ฏธ๋ฆฌ๋ก๋:
<link rel="preload" as="font" href="/bundles/app/fonts/helveticaneue-roman-webfont.woff2" >
- Google Fonts๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ ์ ์๋ ๊ธ๊ผด URL์ ์ง์ํ๋ ๊ธฐํ ๊ธ๊ผด ์ ๊ณต์ ์ฒด๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ ํฐํธ ์๋ฒ๋ฅผ ์ฌ์ ์ฐ๊ฒฐํฉ๋๋ค:
<link rel="preconnect dns-prefetch" href="https://fonts.gstatic.com/" crossorigin>
๋ง์ง๋ง์ผ๋ก ํ์ด์ง์์ ์ฌ์ฉ๋๋ ์ฌ์ฉ์ ์ง์ ๊ธ๊ผด ๊ฐ์๋ฅผ ์ต์๋ก ์ ์งํ์ธ์. ๊ฐ๋ฅํ๋ค๋ฉด ์ฌ์ฉ์ ์ง์ ๊ธ๊ผด ๋์ ์์คํ ๊ธ๊ผด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์คํ ๊ธ๊ผด์ ํ์ฉํ๋ฉด ์น์ฌ์ดํธ๊ฐ ์ฌ์ฉ์์ ์ด์ ์์คํ ์ ์ผ์นํ๊ณ ์ถ๊ฐ ๋ฆฌ์์ค ๋ก๋ฉ์ด ๋ฐฉ์ง๋ฉ๋๋ค.
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง AMP ๋ ์ด์์
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง AMP ๋ ์ด์์์ AMP ์บ์๊ฐ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๋๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ํ์ฉํ๋ฉด AMP ์์ฉ๊ตฌ๋ฅผ ์ ๊ฑฐํ์ฌ AMP ๋ฐํ์ JavaScript๋ฅผ ์คํํ์ง ์๊ณ ๋ AMP ๋ฌธ์๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, AMP ์์ฉ๊ตฌ ์์ฑ๊ธฐ์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ฒ์ ์ ์ผ๋ฐ AMP ๋ฒ์ ๋ณด๋ค ๋ ๋๋ง ์๋๊ฐ ๋ ๋ฐฐ ๋น ๋ฆ ๋๋ค!
AMP ํ์ด์ง๋ฅผ ๊ฒ์ํ ๊ฒฝ์ฐ AMP Optimizer ์ฌ์ฉ์ ๊ณ ๋ คํ๋ ํธ์ด ์ข์ต๋๋ค. AMP Optimizer๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง AMP ๋ ์ด์์์ด ํฌํจ๋ ์์ฒด ๋ฐฑ์๋์์ ์ต์ ํ๋ AMP ํ์ด์ง๋ฅผ ์ง์ํ ์ ์์ต๋๋ค. ๋ํ AMP Optimizer๋ ์ด ๋ฌธ์์ ์ค๋ช ๋ ๋ค์ํ ๊ธฐํ ์ต์ ํ๋ฅผ ์๋์ผ๋ก ์ํํฉ๋๋ค.
๊ธฐ๋ณธ ์ต์ ํ
๋ฌผ๋ก ๋ชจ๋ ๊ธฐ๋ณธ์ ์น ์ฑ๋ฅ ์ต์ ํ๋ AMP ํ์ด์ง์๋ ์ ์ฉ๋ฉ๋๋ค.
- ์ด๋ฏธ์ง ๋ฐ ๋์์ ์ต์ ํ. ์ด๋ฏธ์ง ์ต์ ํ๋ ๋ก๋ฉ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- CSS & HTML ์์ถ ๋ฐ ์ถ์. AMP ํ์ด์ง์ ๋ชจ๋ CSS๋ ์ธ๋ผ์ธ๋์ด ์์ผ๋ฏ๋ก purifycss ๋ฑ์ ํ์ฉํด ์ฌ์ฉํ์ง ์๋ CSS๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
- HTTP ์บ์ฑ ์ฌ์ฉ.
- ๊ทธ ์ธ ๋ค์
-
Written by @sebastianbenz