Firebase-tools: prerender.io์™€ ํ•จ๊ป˜ ํ˜ธ์ŠคํŒ… ์‚ฌ์šฉ

์— ๋งŒ๋“  2014๋…„ 10์›” 10์ผ  ยท  93์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: firebase/firebase-tools

์•ˆ๋…•ํ•˜์„ธ์š”

prerender.io์™€ ๊ฐ™์€ ์„œ๋น„์Šค์™€ ํ•จ๊ป˜ Firebase ํ˜ธ์ŠคํŒ…์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒํ•˜๋ฉด SEO ๊ธฐ๋Šฅ์ด์žˆ๋Š” ์›น์•ฑ (์˜ˆ : angularjs ์•ฑ)์„ ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์šฐ๋ฆฌ๋Š” ๋ ˆ์ด๋”์— ์ด๊ฒƒ์„ ํ™•์‹คํžˆ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋นจ๋ฆฌ ์ฐจ์ž„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค (Kato๊ฐ€ ์—ด๊ฑฐ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ). ์šฐ๋ฆฌ๋Š”์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๊ทธ๊ฒƒ๋“ค์€ ์šฐ๋ฆฌ๊ฐ€ ๋จผ์ € ๋ฒ—์–ด๋‚˜์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋‚ด์‹ฌ์„ ๊ฐ–๊ณ  ์ด๊ฒƒ์ด ํ™•์‹คํžˆ ์šฐ๋ฆฌ ๋งˆ์Œ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„์‹ญ์‹œ์˜ค!

๋ชจ๋“  93 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”,

ํ˜„์žฌ Firebase ํ˜ธ์ŠคํŒ…์˜ ์žฌ ์ž‘์„ฑ / ๋ฆฌ๋””๋ ‰์…˜ ๊ทœ์น™์€ ์‚ฌ์ „ ๋ Œ๋”๋ง ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ์ƒ์„ธํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ๋ถ€ ๊ณ ๊ฐ์€ html5 pushState๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ๋‹นํžˆ ์ •์  ์ธ ์‚ฌ์ดํŠธ์˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์‚ฌ์ „ ๋ Œ๋”๋ง ๋‹จ๊ณ„๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ํŽ˜์ด์ง€ ์•ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋ Œ๋”๋งํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ์ฝ˜ํ…์ธ ๊ฐ€ ํฌ๋กค๋Ÿฌ์— ์ œ๊ณต๋˜๋„๋ก ํ•œ ๋‹ค์Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด ์›น์•ฑ์ด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š๊ณ  ๋‹ค์‹œ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ๋ถ„๋ช…ํžˆ ์ด์ƒ์ ์ด์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํ›จ์”ฌ ๋œ ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด๋˜๋Š” ํฌ๋ง

ํฌ๋ฆฌ์Šค

๊ฒจ์šฐ ๋‘ ๋‹ฌ ๋ฐ–์— ์•ˆ ๋๋‹ค๋Š” ๊ฑด ์•Œ์ง€๋งŒ, ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ๋‚˜์š”? ์—ฌ๋Ÿฌ๋ถ„์€ ํ˜„์žฌ Google ์†Œ์œ ์ด๋ฏ€๋กœ firebase๋กœ ํ˜ธ์ŠคํŒ…๋˜๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค์— ์˜ํ•ด ์ƒ‰์ธ ์ƒ์„ฑ๋˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” ์ด์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ SEO๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ๋ถ„๋ช…ํžˆ ์ค‘์š”ํ•˜๊ณ  Firebase ํ˜ธ์ŠคํŒ…์„ ๊ฐœ๋ฐœ์ž์™€ ๊ด€๋ จ๋˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ณง ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”! ์ด ์—…๋ฐ์ดํŠธ์˜ ์ƒํƒœ๋ฅผ ์•Œ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณง ์˜ฌ๊นŒ์š”? ๋‚˜๋Š” Firebase ํ˜ธ์ŠคํŒ…์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‚ด๊ฐ€ ๊ฑฑ์ •ํ•˜๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ SEO, ๋‚ด ์‚ฌ์ดํŠธ๊ฐ€ Google ์–ด๋””์—๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  firebase์™€์˜ SEO ํ†ตํ•ฉ์„ ๊ฒ€์ƒ‰ํ–ˆ์ง€๋งŒ ์†”๋ฃจ์…˜์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํ•œ๊ณณ์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์„ ์ •๋ง๋กœ ์ข‹์•„ํ•˜๋ฏ€๋กœ ๋‚ด ํŽ˜์ด์ง€๋ฅผ Google์˜ ํฌ๋กค๋Ÿฌ ์—”์ง„์— ์ œ๊ณต ํ•  ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋ถ€๋„๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค. Firebase๊ฐ€ ํ˜„์žฌ Google์—์„œ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ํฐ ๊ฐœ์„ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ์„œ๋น„์Šค์—๋„ ์—ฌ์ „ํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

์Šค๋ ˆ๋“œ์— ๋‚ด ๋ชฉ์†Œ๋ฆฌ ์ถ”๊ฐ€-์ด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

+1

์ด๊ฒƒ๋„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์•ˆ์œผ๋กœ https://divshot.com + firebase๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

+1

์ตœ๊ทผ DIvshot ๋ฐ Firebase ๋ณ‘ํ•ฉ ๋ฐœํ‘œ๋กœ ์ธํ•ด์ด ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฌด๋ฃŒ ์‚ฌ์šฉ์ž ์ •์˜ ๋„๋ฉ”์ธ ๋ฐ prerender.io ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Divshot์œผ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. Fireabse๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ์š”? ํ”„๋ฆฌ ํ‹ฐ์–ด์— ์ปค์Šคํ…€ ๋„๋ฉ”์ธ์„ ์ถ”๊ฐ€ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? prerender.io๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” JS ์‚ฌ์ „ ๋ Œ๋”๋ง์„ Firebase ํ˜ธ์ŠคํŒ…์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ์‚ฌ ์ค‘์ด์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ณต์œ  ํ•  ํ™•๊ณ ํ•œ ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค. (๊ฐœ์ธ ๋ฉ”๋ชจ : ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ์ •๋ง๋กœ๋ณด๊ณ  ์‹ถ๋‹ค).

Firebase๋Š” ๋ชจ๋“  ์‚ฌ์ดํŠธ๊ฐ€ HTTPS ์ „์šฉ์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ SSL ์ธ์ฆ์„œ ํ”„๋กœ๋น„์ €๋‹์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์œผ๋กœ ์ธํ•ด ๋ฌด๋ฃŒ ๋งž์ถคํ˜• ๋„๋ฉ”์ธ ํ˜ธ์ŠคํŒ…์„ ์ œ๊ณต ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ (๋ง์žฅ๋‚œ ์˜๋„ ๋œ) ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์–ด๋–ค ์ข…๋ฅ˜์˜ SEO ๊ธฐ๋Šฅ์€ ์ •์  ์›น ์•ฑ ํ˜ธ์ŠคํŒ… ํ”Œ๋žซํผ์— ํ•„์š”ํ•œ ๊ฒƒ ์ด์ƒ์ด๋ฏ€๋กœ 12 ์›” ์ค‘์ˆœ๊นŒ์ง€ ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌ์‹ ํ˜ธ์ŠคํŒ… ์ œ๊ณต ์—…์ฒด๋กœ ์ „ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๋ถˆํ–‰ํžˆ๋„ ์ €๋ฅผ ํฌํ•จ ).

๋‘ ๋ฒˆ์งธ ๋Œ€๋‹ต์€ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ด๋˜๋ฉฐ ์œ ๋ฃŒ ๊ณ„์ธต์œผ๋กœ ์ ํ”„ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ถ”๊ฐ€ ํ™•์žฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์œ ๊ฐ์ž…๋‹ˆ๋‹ค.

Firebase ํ˜ธ์ŠคํŒ… ์‚ฌ์ดํŠธ์˜ 100 %๊ฐ€ Fastly์˜ ์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ CDN์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ ํ”Œ๋žœ (์‚ฌ์šฉ์ž ์ง€์ • ๋„๋ฉ”์ธ์ด ์•„๋‹˜)์—์„œ๋„ Divshot์˜ ๊ณ ์„ฑ๋Šฅ ํ”Œ๋žœ์˜ ๋ชจ๋“  ํŠน์ „์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์—ญํญ์˜ ๊ฒฝ์šฐ 10GB๋Š” ์ •์  ์›น ์‚ฌ์ดํŠธ์—์„œ _ ๋งŽ์€ _ ๋Œ€์—ญ์ด๋ฉ๋‹ˆ๋‹ค.

Divshot์˜ ๊ณ ์„ฑ๋Šฅ ํŠน์ „์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•จ์„ ์ธ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‚ด ์•ฑ์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  ๋ฐฑ์—”๋“œ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ง€์—ฐํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ CS ํ•™์œ„๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋ฐœ์ „ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์—„์ฒญ๋‚œ ์ง€์—ฐ์„ ๊ฒช์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Firebase๊ฐ€ SEO ์นœํ™”์ ์ด๋˜๋„๋ก ๋„์™€ ์ฃผ๊ฑฐ๋‚˜ Divshot์ด ์ข…๋ฃŒ๋ฅผ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์•„๋งˆ๋„ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ฉด ๊ฒฐ์ฝ” ๋Œ์•„ ์˜ค์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@mbleigh ์ธ์ˆ˜๋ฅผ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

@DamodarSojka , ๋‚˜๋Š” ๋‹น์‹ ๊ณผ ์™„์ „ํžˆ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๊ธฐ์กด Divshot ์œ ๋ฃŒ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ์‚ฌ์ „ ๋ Œ๋”๋ง์€ Facebook์—์„œ ๋‚ด ์›น ์‚ฌ์ดํŠธ์˜ ๋งˆ์ผ€ํŒ… / ๊ณต์œ ๋ฅผ์œ„ํ•œ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. Firebase์—์„œ ๊ณง์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ์›น ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

SEO ๊ธฐ๋Šฅ์— +1

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ Divshot ๊ณ ๊ฐ์—๊ฒŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Prerender ์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Divshot์˜ Prerender ์ง€์›์€ ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ (๊ณต์œ  ํ›„ production.blabla.divshot.io URL ๋•Œ๋ฌธ์—) Firebase์—์„œ Prerender ์ง€์›์ด ์ „ํ˜€ ์—†๋‹ค๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, SEO๋Š” prerender.io๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋“  ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. divshot์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— Firebase์—์„œ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ ์„œ์žฌ์‘์— ๋ฌธ์ œ๊ฐ€์žˆ์–ด

+1-์œ ๋ฃŒ Divshot ๊ณ ๊ฐ, Firebase๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด Prerender ์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Completley๋Š” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. Firebase๋Š” ์‚ฌ์ „ ๋ Œ๋”๋ง ๊ธฐ๋Šฅ์ด์—†๋Š” ๊ฒฝ์šฐ Divshot ๋Œ€์ฒดํ’ˆ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ €๋Š” Divshot ์œ ๋ฃŒ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. Divshot์ด ์ข…๋ฃŒ๋œ๋‹ค๋Š” 2 ๊ฐœ์›”์˜ ํ†ต์ง€์™€ ํ•จ๊ป˜. ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์„œ๋ฒ„ ๊ตฌ์„ฑ์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ํ•˜๋˜ ์ผ์— ๊ณ„์† ์ง‘์ค‘ํ• ๊นŒ์š”? ์ด๊ฒƒ์ด ์„œ๋น„์Šค์˜ ์•„์ด๋””์–ด ์•„๋‹™๋‹ˆ๊นŒ? ์„œ๋ฒ„ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๊นŒ? Firebase๊ฐ€ 12 ์›” 14 ์ผ ์˜ต์…˜์ธ์ง€ ์•„๋‹ˆ๋ฉด ์„œ๋ฒ„ ๊ตฌ์„ฑ์— ์‹œ๊ฐ„์„ ํ• ์• ํ•ด์•ผํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

Gents, Mike๋Š” ์ด๋ฏธ์ด ๊ธฐ๋Šฅ์˜ ์ƒํƒœ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” JS ์‚ฌ์ „ ๋ Œ๋”๋ง์„ Firebase ํ˜ธ์ŠคํŒ…์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ์‚ฌ ์ค‘์ด์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ณต์œ  ํ•  ํ™•๊ณ ํ•œ ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค. (๊ฐœ์ธ ๋ฉ”๋ชจ : ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ์ •๋ง๋กœ๋ณด๊ณ  ์‹ถ๋‹ค).

ํƒ€์ž„ ๋ผ์ธ์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ๋งŒํผ ๊ทธ๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์—‡์„ํ•ด์•ผํ•˜๋Š”์ง€ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณต๊ณต ๋„๋กœ์ง€๋„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์ด๋‚˜ ์ฟผ๋ฆฌ์˜ ์ˆ˜์— ๊ด€๊ณ„์—†์ด ํƒ€์ž„ ๋ผ์ธ์—์„œ ๋ณด์žฅ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ–‰๋ณตํ•˜์ง€ ์•Š์€ ์†œํ„ธ ๋Œ€๋‹ต์€ ์•„๋‹ˆ์ง€๋งŒ, ํ˜„์‹ค์ ์ธ ๋Œ€๋‹ต์ด ๊ณ„ํš์— ๋” ์œ ์šฉํ•˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

โ˜ผ, ์นดํ† 

๋‹น์‹ ์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ •๋ง๋กœ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด๋‹ˆ ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค :) ์—ฌ๋Ÿฌ๋ถ„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@mbleigh / @katowulf Firebase์— JS ์‚ฌ์ „ ๋ Œ๋”๋ง์„ ๋„์ž…ํ•˜๋ ค๋Š” ๊ณ„ํš์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ : Firebase๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ˜„์žฌ SEO ์ง€์›์ด JS ์‚ฌ์ „ ๋ Œ๋”๋ง์ด ์–ด๋–ป๊ฒŒ ๋” ์ข‹์•„ ์งˆ๊นŒ์š”?

์ด SO ๋‹ต๋ณ€์„ ๊ธฐ๋ฐ˜์œผ๋กœ Firebase๋Š” ์ด๋ฏธ ng-conf 2015 ์ดํ›„๋กœ ์ฆ‰์‹œ SEO๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์—ฌ์ „ํžˆ Prerender.io๋ฅผ Firebase์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ „๋ฌธ๊ฐ€๋ฅผ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

@douglascorrea for Google SEO ๊ฐœ์„  ์‚ฌํ•ญ์€

์ด๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ํฐ ์ด๋“์€ Facebook OpenGraph ํƒœ๊ทธ, Twitter ์นด๋“œ ๋ฐ Google ์ด์™ธ์˜ ๊ฒ€์ƒ‰ ์—”์ง„์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ์ง€์›์„ ์ œ๊ณตํ•˜๋ ค๋Š” ์‚ฌ์ดํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ผ์„ ๋ช…ํ™•ํžˆํ•˜๊ณ  ๋‚˜๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ์ •๋ง ์ž์‹ ์˜ ์˜๊ฒฌ์— ๋งํ–ˆ๋‹ค ์ง€์› ๋˜๋Š” @drtriumph ๊ฐ™์€ ๋Œ€์ฒด ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ฒƒ์ธ์ง€ ์ƒ๊ฐํ•˜๊ฒŒ ๋‹น์‹ ์„ @mbleigh ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ณ  ์žˆ์—ˆ๊ณ  ๋‹ค๋ฅธ ๋…์ž๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ๋‹ค์Œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  • 2015 ๋…„ 10 ์›”์— Google์€ _escaped_fragment_ ๋ฐ ํ•ด์‹œ ๋ฑ… (! #) ์‚ฌ์šฉ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Google์˜ ๊ฒฝ์šฐ ๋ชจ๋“  SPA๋Š” html5 pushstate (angularjs์˜ html5mode)๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ hashbang (! #)์„ ๊ณ„์† ์ง€์›ํ•˜๊ณ  ์ž ์‹œ ๋™์•ˆ ์ด์Šค์ผ€์ดํ”„ ๋œ ์กฐ๊ฐ์œผ๋กœ ๋ฒˆ์—ญ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • Facebook ๋ฐ ๊ธฐํƒ€ ํฌ๋กค๋Ÿฌ๋Š” ์—ฌ์ „ํžˆ escaped_fragment๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Facebook ์ž๋™ ๋ฒˆ์—ญ ํ•ด์‹œ ๋ฑ…์„ _escaped_fragment ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๋‹ค๋ฅธ ํฌ๋กค๋Ÿฌ๋Š” Google์˜ ์ด์ „ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Firebase๋Š” ์•„์ง User-Agent๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฆฌ๋””๋ ‰์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋กค๋Ÿฌ๊ฐ€ hasbangs (! #)๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด escape_fragament๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค.
    URL์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ :
    http://www.example.com/#!/user/1
    ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด URL์— ์•ก์„ธ์Šคํ•˜์‹ญ์‹œ์˜ค.
    http://www.example.com/?_escaped_fragment_=/user/1

๋”ฐ๋ผ์„œ ์ž ์‹œ ๋™์•ˆ ์ด๊ฒƒ์„ ์•Œ์•„๋‚ด๋Š” ํ•œ ๊ฐ€์ง€ ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • html5 pushstate (Angular์˜ HTML5 ๋ชจ๋“œ)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ๋Œ€์‹  hashbang (! #)์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • prerender.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์›ํ•˜๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€์˜ ์ •์  / ์บ์‹œ ๋œ ๋ฒ„์ „์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์ธ ์‚ฌ์ „ ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ).
  • ?_escaped_fragment_= ํด๋”๋กœ ์‹œ์ž‘ํ•˜๋Š” ํด๋” ๊ตฌ์กฐ์— ์บ์‹œ ๋œ ๋ฒ„์ „์„ ์ €์žฅํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋”๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    URL์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ :
    http://www.example.com/#!/user/1
    ์ƒ์„ฑ ๋œ ํด๋”๋Š”
    ?_escaped_fragment_= +- /user +- /1

1 ๊ฐœ์˜ ํŒŒ์ผ์ด ์‹ค์ œ html ํŒŒ์ผ์ด๋ฉ๋‹ˆ๋‹ค.

  • firebase-tools๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฃจํŠธ firebase ํด๋”์— ํ•ด๋‹น ํด๋”๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค (์ด ํ”„๋กœ์„ธ์Šค๋Š” ํฌ๋ก  ์ž‘์—… ๋“ฑ์—์„œ ์ž๋™ํ™” ๋  ์ˆ˜ ์žˆ์Œ).

์ž‘๋™ ๋ฐฉ์‹ :

  • ํฌ๋กค๋Ÿฌ๊ฐ€ ํ•ด์‹œ ๋ฑ… URL์„ ํ™•์ธํ•˜๋ฉด ?_escaped_fragment_= URL์— ๋„๋‹ฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํด๋”์— ์‹ค์ œ HTML ํŒŒ์ผ์ด ์žˆ์œผ๋ฏ€๋กœ Firebase๊ฐ€ ๊ฒŒ์žฌ๋˜๊ณ  index.html๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํฌ๋กค๋Ÿฌ๊ฐ€ ์ฝ๋Š” HTML์€ AngularJS ๋ฒ„์ „์ด ์•„๋‹Œ ์บ์‹œ ๋œ ๋ฒ„์ „์ด๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ์‚ฌ์ „ ๋ Œ๋”๋ง์„ ์‹คํ–‰ํ•˜๋Š” ์˜ˆ์•ฝ ๋œ ์ž‘์—…์„ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ํด๋”๋ฅผ ์ €์žฅํ•˜๊ณ  Firebase ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Firebase ๋ฐฐํฌ๋Š” ๋ถ€๋ถ„ ๋ฐฐํฌ (๋™๊ธฐํ™” ๋˜๋Š” ์ฆ๋ถ„ ๋ฐฐํฌ)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ด๋‹น ํ•  ์„œ๋ฒ„์— ๋ฐฐํฌ์˜ ์—…๋ฐ์ดํŠธ ๋œ ์‚ฌ๋ณธ์„ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •์„ ์‹œ๋„ํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ—ค๋” ํ‚ค์ฒ˜๋Ÿผ "X-Prerender-Token"์„ ์„ค์ •ํ•˜๋„๋ก ํ—ˆ์šฉ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ ???
https://www.firebase.com/docs/hosting/guide/full-config.html
https://prerender.io/install-token

+1

@ srk9 ์ด ์Šค๋ ˆ๋“œ์˜ ์šฉ๋„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

์ด ๋ฌธ์ œ๊ฐ€ ์ข…๊ฒฐ ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒŒ์‹œ ๋œ ์†”๋ฃจ์…˜์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@douglascorrea , ๋‹น์‹ ์˜ ์•„์ด๋””์–ด๋Š” ์–ด๋–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ,
-D

์•ˆ๋…•ํ•˜์„ธ์š” @bethuneco , ์—ฌ๊ธฐ์— ๊ฒฐ๊ณผ๋ฅผ ๊ฒŒ์‹œํ•˜์ง€ ์•Š์€ ๊ฒƒ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ €๋Š” ๊ธฐ์‚ฌ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ์ด ์†”๋ฃจ์…˜์ด ํ”„๋กœ๋•์…˜์—์„œ ์ž‘๋™ํ•˜๋„๋กํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ "๊ธฐ๊ณ„"๋กœ ๊ตฌ์„ฑ ๋  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ฌ์•˜๊ณ  ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— "๊ถŒ์žฅ"ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆํŽธ ํ•จ์„ ๋Š๋ผ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ ๋ฐฐํฌ์— ๋Œ€ํ•ด ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์ „ ๋ Œ๋”๋ง / ์Šคํฌ๋žฉํ•˜๊ณ  ์œ„์—์„œ ์„ค๋ช…ํ•œ ํด๋” (/? _ escaped_framgment_ / xxxx)์— ๊ฒฐ๊ณผ HTML์„ ์ €์žฅํ•˜๋Š” "๋ฐฐํฌ / ํ”„๋ฆฌ ๋ Œ๋”๋ง"์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ "์‹ค์ œ / ๋ฌผ๋ฆฌ์ "html์€ "ํ”„๋ฆฌ ๋ Œ๋”๋ง ๋œ"ํŽ˜์ด์ง€๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ google / facebook / twitter ํฌ๋กค๋Ÿฌ๊ฐ€ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ "? _escaped_fragment"์ ‘๋‘์‚ฌ๋ฅผ ํ†ตํ•ด "์ด์Šค์ผ€์ดํ”„ ๋œ ์กฐ๊ฐ"์„ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์‹ค์ œ๋กœ ์‹ค์ œ HTML์ด์žˆ๋Š” ์‹ค์ œ ํด๋”๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ํ•ด๋‹น HTML์ด ์ƒ‰์ธํ™”๋ฉ๋‹ˆ๋‹ค.
์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ด๋™ํ•˜๋ฉด? _escaped_fragment๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋™์  ํŽ˜์ด์ง€๋ฅผ ๋ฐ›๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š”์ด "์†”๋ฃจ์…˜"์ด ๊ฐ ํŽ˜์ด์ง€ ๋˜๋Š” ์ถ”๊ฐ€ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด HTML์„ ๊ณ„์† ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹จ์ˆœํ•œ CMS ์ธ ๊ฒฝ์šฐ ๋ชจ๋“  ์ƒˆ ๊ฒŒ์‹œ๋ฌผ / ๊ธฐ์‚ฌ / ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ์ƒˆ HTML ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋ฐฑ ๊ฐœ์˜ "ํ”„๋ฆฌ ๋ Œ๋”๋ง ๊ฐ€๋Šฅํ•œ"ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ๋™์  ์†Œ์…œ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•  ๋•Œ ๋ฌธ์ œ๋Š” ๋” ์ปค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์‚ฌ์ „ ๋ Œ๋”๋ง / ๋‚ด๋ถ€ ํฌ๋กค๋Ÿฌ๊ฐ€ ํ•ญ์ƒ ์‹คํ–‰๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ํ˜„์‹ค ์„ธ๊ณ„์—์„œ ์Šคํ† ํผ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ž‘์€ ์•ฑ์—์„œ๋Š” ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ ํฐ ์•ฑ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋งค์šฐ "์†์ž„์ˆ˜"์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ํฌ๋กค๋Ÿฌ๊ฐ€ ๊ฐˆ ๋•Œ ์‹ค์ œ๋กœ HTML์„ ์ƒ์„ฑํ•˜๊ณ  ํฌ๋กค๋Ÿฌ๋ฅผ ์˜จ๋ผ์ธ์—์„œ ์‚ฌ์ „ ๋ Œ๋”๋ง ํ•  ์‚ฌ์ „ ๋ Œ๋”๋ง ์„œ๋น„์Šค๋กœ ์ž๋™ ๋ฆฌ๋””๋ ‰์…˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‚ฌ์ „ ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

๋”ฐ๋ผ์„œ ์ง€๊ธˆ๊นŒ์ง€๋Š” Nginx ์„œ๋ฒ„๋ฅผ ์ •์  ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์ „ ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋‹จ์ผ ํŽ˜์ด์ง€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‚ฌ์ „ ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•˜๋Š” https://www.netlify.com/ ๊ณผ ๊ฐ™์€ Divshot ๊ฒฝ์Ÿ ์—…์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. .

@douglascorrea ,

ํ™•์žฅ ๋œ ์„ค๋ช…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด Netlify๋ฅผ ์ฒ˜์Œ ์–ธ๊ธ‰ ํ•œ ์‚ฌ๋žŒ ์ด๋‹ˆ ์ œ๊ฐ€ ์กฐ์‚ฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ ๋ฏธ๋ฆฌ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์ด ์ž‘์€ ์‚ฌ์ดํŠธ์—๋งŒ ์ ํ•ฉํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ ๋‚ด ์•ฑ์€ ์ƒ๋‹นํžˆ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— (์ตœ๋Œ€ ์•ฝ 1,200 ํŽ˜์ด์ง€) ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜ (Google์ด ํ”ผํ•˜๋Š” ์†”๋ฃจ์…˜)์€ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์ „ ๋ Œ๋”๋งํ•˜๊ณ  ๋กœ๋ด‡ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด HTML์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Google์€ ์ด๋ฏธ ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€์—์„œ ๋ Œ๋”๋ง์„ ์‹œ์—ฐ ํ–ˆ์œผ๋ฏ€๋กœ ๊ธฐ์ˆ ์ ์œผ๋กœ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด‘๊ณ  ์‚ฌ์—…์—์„œ ๊ฒฝ์Ÿ์ž๋ฅผ ๋•๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ „๋žต์ ์œผ๋กœ ๋„์ „์ ์ธ ์ผ์ž…๋‹ˆ๋‹ค.

์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์— ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜ผ๋ž€ ์Šค๋Ÿฌ์šธ ์ˆ˜์žˆ๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ๋ช…ํ™•์„ฑ์„ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Firebase ํ˜ธ์ŠคํŒ…์€ ์„œ๋ฒ„์—์„œ JS ์‚ฌ์ „ ๋ Œ๋”๋ง์„ ์ง€์›ํ•˜๋‚˜์š”? ์•„๋‹ˆ, ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก ์‚ฌ์ „ ๋ Œ๋”๋ง์€ ์šฐ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜๊ณ  ์‹ถ๊ณ  ์žฅ๊ธฐ์ ์ธ ๋กœ๋“œ๋งต์— ์žˆ์ง€๋งŒ ํ˜„์žฌ ๋ฐœํ‘œ ํ•  ํŠน์ • ๋‚ ์งœ ๋‚˜ ์ผ์ •์ด ์—†์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Facebook ๊ณต์œ  ๋˜๋Š” Twitter ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด๊ฒƒ์ด ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ์ด์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด X-Prerender-Token ์ง€์›ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”, ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „ ๋ Œ๋”๋ง์€ ?_escaped_fragment_= URL์—์„œ _ ์‹ค์ œ ์‚ฌ์ „ ๋ Œ๋”๋ง ๋œ ์ฝ˜ํ…์ธ  _๋ฅผ ์ œ๊ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ—ค๋”๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„๊ฐ€ ์ธ์‹ํ•˜๊ณ  ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๋งŒํผ์˜ ๋ฐ˜์ชฝ ์ธก์ • ์†”๋ฃจ์…˜์€ ์—†์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ข…๋ฅ˜์˜ ์‚ฌ์ „ ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ํ˜„์žฌ ํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ์‹ค์ œ "ํ”„๋ฆฌ ๋ Œ๋”๋ง"์€ ์ •์  ์‚ฌ์ดํŠธ ์ปดํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ์ด ์ž‘์—…์€ Jekyll๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€๋งŒ ๋กœ์ปฌ์—์„œ ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ๋ณด๋‹ค ๋™์  ์ธ ์‚ฌ์ดํŠธ๋ฅผ "ํ”„๋ฆฌ ๋ Œ๋”๋ง"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ URL์„ ์ฒ ์ €ํžˆ ๋ Œ๋”๋ง ํ•œ ๋‹ค์Œ ๋ฐฐํฌํ•ด์•ผํ•˜๋ฏ€๋กœ ํ˜„์žฌ๋กœ์„œ๋Š” ํ™˜์ƒ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. CDN์ด ์ฟผ๋ฆฌ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์›๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ?_escaped_fragment_ ๋œ ํŒŒ์ผ ์ด๋ฆ„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‹ค๋ฅธ ํฌ๋กค๋Ÿฌ๋ฅผ ์ฐจ๋‹จํ•˜๊ธฐ์œ„ํ•œ ์ผ์ข…์˜ Google ์ „๋žต์ž…๋‹ˆ๊นŒ? ์•„๋‹ˆ, ์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค. Firebase ํ˜ธ์ŠคํŒ…์— ์‚ฌ์ „ ๋ Œ๋”๋งํ•˜์—ฌ ์–ป์„ ์ˆ˜์žˆ๋Š” ์ด์ ์„ ์ ๊ทน ์ง€์›ํ•˜๊ณ ์žํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์‹œ๊ฐ„๊ณผ ์ž์›์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์†Œ์…œ ๋ฏธ๋””์–ด ํƒœ๊ทธ / ๋Œ€์ฒด SEO ๋ฌธ์ œ๋กœ ์ธํ•ด Firebase ํ˜ธ์ŠคํŒ…์—์„œ ์ „ํ™˜ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ด ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ฆฌ๊ฐ€ ์ธํ„ฐ๋„ท์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ฒ˜๋Ÿผ ์šฐ๋ฆฌ์˜ ๋งํฌ์— ๋ฉ‹์ง„ ์‚ฌ์ง„์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„ ์ฐจ๋ฆด ๋•Œ ๊ทธ๊ฒƒ์€ ๊ฑฐ๋ž˜๋ฅผ ๊นจ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

phantomjs ๋ฐ prerender ๋ฏธ๋“ค์›จ์–ด๋กœ ์‚ฌ์ „ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค์ด๊ณ  ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ์ž‘์—… ์ž‘์—…์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด prerender.io๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์—์„œ๋Š” ์•ฝ๊ฐ„ ๋Š๋ฆฌ์ง€ ๋งŒ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ์š”์ฒญํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ์บ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  html์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์—ฌ ํƒœ๊ทธ์™€ ์ฝ˜ํ…์ธ ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑฐ๋Œ€ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „ ๋ Œ๋”๋ง์€ ๋ผ์ด๋ธŒ Firebase ๋ฐ์ดํ„ฐ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? Firebase ๋ฐ์ดํ„ฐ๋Š” ์‹ค์‹œ๊ฐ„์ด๋ฉฐ ์—ฐ๊ฒฐ์€ ์ง€์†์ ์ž…๋‹ˆ๋‹ค. ์‚ฌ์ „ ๋ Œ๋”๋ง์€ ์ผํšŒ์„ฑ์ด๋ฉฐ ์—ฐ๊ฒฐ์ด ๋‹ซํž™๋‹ˆ๋‹ค. ์š”์ฒญ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์ด ์–ธ์ œ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. .on("value") firebase ๊ตฌ๋…๋งˆ๋‹ค GET ์š”์ฒญ์„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „ ๋ Œ๋”๋ง ์š”์ฒญ ์ธ ๊ฒฝ์šฐ ๊ตฌ๋…์„ ๊ฑด๋„ˆ ๋œ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์ธ ๊ฒฝ์šฐ GET ์š”์ฒญ์„ ๊ฑด๋„ˆ ๋œ๋‹ˆ๋‹ค. .on("child_*") ์ด๋ฒคํŠธ์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ๊ธฐ๋ณธ ํ•ญ๋ชฉ ํŒŒ์ผ ์ƒ๋‹จ์—์„œ ์ „์—ญ ์‚ฌ์ „ ๋ Œ๋”๋ง ํ”Œ๋ž˜๊ทธ๋ฅผ false ๋กœ ์„ค์ • ํ•œ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€๋กœ๋“œ๋˜๋ฉด ๊ฐ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ํ”Œ๋ž˜๊ทธ๋ฅผ true ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๋””์ž์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ _loading state_ ๋ฐ _error state_ ๋ฐ _success state_๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜ / ์„ฑ๊ณต ์ƒํƒœ ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ์—์„œ ํ”Œ๋ž˜๊ทธ๋ฅผ true ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ํ†ต ์Šค๋Ÿฝ์ง€๋งŒ ์ผ๋ถ€ ๋™์  ํŽ˜์ด์ง€ ๋งŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์œผ๋ฉฐ ํŠน๋ณ„ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ •์  ํ˜œํƒ์ด ๋น„์šฉ๋ณด๋‹ค ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@mbleigh๋Š” ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์ด ๋ฌด์—‡์„ ์ƒ๊ฐํ•ด

๋ช‡ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๊ฐ€ ํ•„์š”ํ•œ ์œ ์ผํ•œ ์ด์œ ๋Š” ํŠธ์œ„ํ„ฐ ์นด๋“œ์™€ ์˜คํ”ˆ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ๋ฐฑ์—”๋“œ๋Š” ๋™ํ˜• ๋ Œ๋”๋ง๊ณผ ๊ฐ™์€ ๋‹จ์ผ ํŽ˜์ด์ง€ ์•ฑ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๊ทธ์ € ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Twitter ๋ฐ OG ํƒœ๊ทธ๋Š” ๊ณต์œ ๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ์•ฑ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ด์–ด๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์ด ๊ฐ์ฒด / html์„ ์ œ๊ณตํ•˜๋„๋ก ๋ช…๋ นํ•˜๋Š” ์ผ์ข…์˜ ์žฌ ์ž‘์„ฑ๊ณผ ์œ ์‚ฌํ•œ ๊ทœ์น™์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋Š” ๋ชจ๋“  ๊ณต์œ ๊ฐ€ URL์„ ๋ฐฉ๋ฌธํ•˜๊ฑฐ๋‚˜ ๊ณต์œ  ๋ฒ„ํŠผ์„ ๋จผ์ € ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋ฏ€๋กœ ๋ฏธ๋ฆฌ ์ค€๋น„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

bump .. ๋ฐฉ๊ธˆ Firebase์— ๋†€๋ž๊ณ ์ด ๋Œ“๊ธ€์„ ์ฝ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค ..
๋‚˜๋Š” ๋˜ํ•œ Prerender์™€ ๊ฐ™์€ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ ??

ํ•จ๊ป˜ Google! ๋‹น์‹ ์€ freegin '๊ฒ€์ƒ‰ ์—”์ง„์ž…๋‹ˆ๋‹ค !! :์›ƒ์Œ:

์‹ฌ๊ฐํ•˜๊ฒŒ ์ƒ๊ฐ. ์ด๊ฑด ์ •๋ง ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ์ € ๊ฐ€์žฅ ์ €์ฃผ๋ฐ›์€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ผ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋†๋‹ด ์ด์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ์š”์ ์„ ๋งํ•˜์ž๋ฉด, ๊ทธ ๋ฐœ์–ธ์€ Google ๊ฒ€์ƒ‰์ด๋‚˜ Google Firebase์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ทธ์ค‘ ํ•˜๋‚˜๋งŒ ๊ฒ€์ƒ‰ ์—”์ง„์ด๊ณ  ๊ทธ์ค‘ ํ•˜๋‚˜๋งŒ Firebase ํ˜ธ์ŠคํŒ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค (์›น ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์ „ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์€์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ์™€ ๋” ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ํ˜ธ์ŠคํŒ…์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ถ€๊ฐ€๊ฐ€์น˜๊ฐ€ ์žˆ๊ธดํ•˜์ง€๋งŒ).

๊ด€๋ จ ํ•˜์šฐ์Šค ํ‚คํ•‘ ๋ฉ”๋ชจ์—์„œ๋Š” firebase-tools (์˜ˆ :์ด OSS ๋ฌธ์ œ ์ถ”์ ๊ธฐ) ์™€๋„ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ˆœ์œ„ ํ† ๋ก ์— ๊ท€ํ•˜์˜ ํˆฌํ‘œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ผ ๋ง๋ฆฌ์ŠคํŠธ๋Š” ํ–ฅํ›„ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์š”์ฒญ์— ๋Œ€ํ•ด ์—ฐ๋ฝํ•˜๊ธฐ ๊ฐ€์žฅ ์ข‹์€ ๊ณณ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ์žŠ์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Google Cloud Functions์™€ ํ†ตํ•ฉํ•˜๊ณ  ์• ๋„๋ฆฌํ‹ฑ์Šค, ์˜ค๋ฅ˜๋ณด๊ณ , Test Lab์„ ํ†ตํ•ด ํƒ„ํƒ„ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋œ ์ค‘์š”ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์— ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋…ผ์˜ ํ•  ๋•Œ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์–ธ๊ธ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์— ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. โ˜ผโ˜ผโ˜ผ

firebase @katowulf ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ์— ๋Œ€ํ•œ thx!
์ด๊ฒƒ์ด ๋‚ด ng1 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ "ํ˜ธ์ŠคํŠธ"๋กœ firebase๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‹น์‹ ์€ ํ˜ผ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๊ฐ™์€ ์ œํ•œ์— ๋ถ€๋”ช ํ˜”์Šต๋‹ˆ๋‹ค. ์ด์ œ Google์—์„œ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ ์ฝ˜ํ…์ธ ์˜ ์ƒ‰์ธ์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๊ณ  Firebase ์ฝ˜ํ…์ธ  ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๊ธฐ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ํŠน๋ณ„ ์กฐํ•ญ์ด ์žˆ์œผ๋ฏ€๋กœ ํŽ˜์ด์ง€์—๋กœ๋“œ ๋œ ์ธ์ฆ๋˜์ง€ ์•Š์€ Firebase ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ ์ƒ‰์ธ์ด ์ƒ์„ฑ๋˜๊ณ  ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์™„์ „ํ•œ ์‚ฌ์ „ ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์›์€ ๋ ˆ์ด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค.

@katowulf ๋Š” headsup๊ณผ

@samvloeberghs ๊ทธ๋Ÿฌ๋‚˜ Google์ด ์ด๋Ÿฌํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด์ด๋ฅผ ๋”ฐ๋ฅผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ด๊ฒƒ์ด ์ด๊ฒƒ์„ ๋„๋ฆฌ ๋ณด๊ธ‰ํ•˜๊ธฐ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋‹จ๊ณ„์ž„์„ ์•”์‹œํ•˜๊ณ ์žํ–ˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์ ์–ด๋„ ์˜ค๋Š˜๋‚  Google๊ณผ ํ•จ๊ป˜ ์ž‘๋™ ํ•จ).

FB / LinkedIn / Twitter๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋น ๋ฅด๊ฒŒ ์ „์ง„ ํ•  ์ˆ˜์žˆ๋Š” Google์˜ ๋Šฅ๋ ฅ์„ ๋”ฐ๋ฅผ ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐํ›„์—๋Š” ํ•ญ์ƒ ์ฃผ์š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š”์ด๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— Google์€ Angular Universal์„ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„ ์ธก ์ปดํŒŒ์ผ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” NG2์—์„œ ์ž‘์—…ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. :) ๐Ÿ‘

๊ตฌ์ถœ ๊ฐ๋„! ์ž ๊น๋งŒ ์š”, ๊ธฐ๊ณ„ ํ•™์Šต์ด์ด ๋ชจ๋“  ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๋ง์”€์ธ๊ฐ€์š”?

2 ์„ผํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ฐ์ด ์†Œ์…œ ๋ฏธ๋””์–ด ์นด๋“œ๋ฅผ ์ตœ์†Œํ•œ SEO๋งŒํผ์ด๋‚˜ ์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ธฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ํ”„๋กœ์ ํŠธ์—์„œ ๋งํ•˜๋ฉด Twitter / Facebook์€ ๋ธŒ๋žœ๋“œ๊ฐ€ ์›น ์‚ฌ์ดํŠธ ๋งํฌ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์ž์‹ ์„ ํ™๋ณดํ•˜๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ SEO๋Š” ์—ฌ์ „ํžˆ ์ค‘์š”ํ•˜์ง€๋งŒ ์†Œ์…œ ๋ฏธ๋””์–ด ์นด๋“œ๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๋‹จ๊ธฐ์ ์ธ ์†”๋ฃจ์…˜์ผ๊นŒ์š”? ์›น ์นด๋“œ๋Š” ๋ฉ”ํƒ€ ํƒœ๊ทธ ์ผ ๋ฟ์ด๋ฏ€๋กœ firebase.json์—์„œ ๊ตฌ์กฐ๋ฅผ ์ •์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ (๋ณด์•ˆ ๊ทœ์น™๊ณผ ์œ ์‚ฌ)? Firebase๋Š” ํŠธ์œ„ํ„ฐ / ํŽ˜์ด์Šค ๋ถ ํฌ๋กค๋Ÿฌ์— ์ ํ•ฉํ•œ ๋ฉ”ํƒ€ ํƒœ๊ทธ๋ฅผ ์‚ฝ์ž… ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค .๐Ÿ˜„

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ›Œ๋ฅญํ•œ ์ž‘์—…๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋” ํฅ๋ฏธ๋กœ์šด Firebase ๊ธฐ๋Šฅ (ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ ๐Ÿ‘!)์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

@katowulf , ๋‚ด ์˜๊ฒฌ์€ ๋ฌด์—‡๋ณด๋‹ค ๊ฐ•ํ•œ '๋ฒ”ํ”„'์˜€์Šต๋‹ˆ๋‹ค ... ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ๋†€๋ผ์šด ์ผ์„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ์ „์ฒด์ ์œผ๋กœ Google์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ๋†๋‹ด์„ ๋ณด๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” Firebase๊ฐ€์ด "SPA / PWA-SEO ํŽ˜์ด์ง€ ๋ Œ๋”๋ง"๋ฌธ์ œ ์ „์ฒด๋ฅผ ์†Œ์œ ํ•ด์•ผํ•˜๋Š” ์ƒˆ๋กœ์šด * Google ๋ถ€์„œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ๋‚˜์˜ ์ƒ๊ฐ์€ ...

Google์ด ์„ธ์ƒ์— ๋‚ด๋†“๋Š” ๋ชจ๋“  ์ œํ’ˆ์€ ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ด์•ผํ•˜๋ฉฐ ์›๋ž˜ ์ œํ’ˆ์ธ Google ๊ฒ€์ƒ‰์ด ์ž‘๋™ํ•˜๊ณ  ๋ฐ˜์˜ํ•˜๋Š” ๋น›๋‚˜๋Š” ์˜ˆ๊ฐ€๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

SPA๋Š” ํ•œ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค ..Google์—๋Š” [Angular]์™€ [Polymer] ์ค‘ 2 ๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. SEO (Meta Tags / OpenGraph / Schema)๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ฃผ์š” ๋ธ”๋ž™ ๋ฐ•์Šค์ž…๋‹ˆ๋‹ค (๋ฐฑ์—”๋“œ ๋‹Œ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด). Google ๊ฒ€์ƒ‰์ด JS ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ฐ˜๊ฐ€์šด ์†Œ์‹ ์ด์—ˆ์ง€๋งŒ, ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ์ ˆ๋ฐ˜์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค๋กœ์„œ์˜ ๋ฐฑ์—”๋“œ (BaaS) ์ธ Firebase๋Š” ์ „์ฒด SPA ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ์ž‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜์žˆ๋Š” ์™„๋ฒฝํ•œ ์ƒˆ * Google ๊ทธ๋ฃน ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์ค‘์š” / ์ตœ์šฐ์„  ๊ธฐ๋Šฅ์— ์†ํ•ด์•ผํ•œ๋‹ค๊ณ  ๊ฐ•ํ•˜๊ฒŒ ๋Š๋‚๋‹ˆ๋‹ค.

์ด ํ—ค๋“œ ๋ผ์ธ์„ ์ฝ๋Š”๋‹ค๊ณ  ์ƒ์ƒ ํ•ด๋ณด์„ธ์š” ...

FIREBASE ์กด์žฌ ...
๋ชจ๋“  ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (SPA) ๋ฐ ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (PWA)์„์œ„ํ•œ ์ƒˆ๋กญ๊ณ  ๊ฐœ์„  ๋œ SEO!

๊ฐœ๋ฐœ์ž๋“ค์€ ๋ชฐ๋ ค๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค : +1 :

์šฐ๋ฆฌ๋Š” ๋ ˆ์ด๋”์— ์ด๊ฒƒ์„ ํ™•์‹คํžˆ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋นจ๋ฆฌ ์ฐจ์ž„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค (Kato๊ฐ€ ์—ด๊ฑฐ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ). ์šฐ๋ฆฌ๋Š”์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๊ทธ๊ฒƒ๋“ค์€ ์šฐ๋ฆฌ๊ฐ€ ๋จผ์ € ๋ฒ—์–ด๋‚˜์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋‚ด์‹ฌ์„ ๊ฐ–๊ณ  ์ด๊ฒƒ์ด ํ™•์‹คํžˆ ์šฐ๋ฆฌ ๋งˆ์Œ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„์‹ญ์‹œ์˜ค!

์ด๊ฒƒ์€ ์‹ค๋ง ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด์ œ firebase ๋Œ€์•ˆ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ...

๊ฑฐ์˜ 3 ๋…„ ...

์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ ..?

firebase๊ฐ€ divshot์„ ์†Œ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด์ œ ์ž‘๋™ํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๊นŒ? PLZ ์—…๋ฐ์ดํŠธ!

์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์—ด๋ง์„ ์ž˜ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์—์„œ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„  ์ˆœ์œ„์ž…๋‹ˆ๋‹ค. ์•„์ง ๋ฐœํ‘œ ํ•  ์ผ์ •์ด ์—†์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์— ๋Œ€ํ•ด ์žŠ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

+1

:( :( :(

๋น„์Šทํ•œ ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋ญ˜ ๋ดค์–ด? ;)

Firebase ํ•จ์ˆ˜๋ฅผ ๊ณต์œ  ๋งํฌ ๋์ ์œผ๋กœ ์‚ฌ์šฉํ•œ ๋‹ค์Œ JavaScript ๋ฐ ๋งํฌ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ณด๊ฑฐ๋‚˜ ๋ณด์ง€ ๋ชปํ–ˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ Cloud Functions๋Š” ์ด์ œ Firebase ํ˜ธ์ŠคํŒ…๊ณผ ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค !!!

์ด๋Š” Firebase ํ˜ธ์ŠคํŒ…์„ ์‚ฌ์šฉํ•œ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์— ๋Œ€ํ•œ ํ‘œ์ค€ ์†”๋ฃจ์…˜์œผ๋กœ ๊ฐ„์ฃผ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ๊ฒจ!

@mbleigh OK ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€์žˆ๋Š” ์ „์—ญ ํ—ค๋” ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ํ˜„์žฌ ํ”„๋ŸฐํŠธ ์—”๋“œ์—์„œ ๋ณต์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ์„ค์น˜ํ•˜๋ฉด์ด ๊ธฐ๋Šฅ์„ ์ผœ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

<meta name="description" content="{{ pageDescription }}">

์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2017 ๋…„ 5 ์›” 17 ์ผ ์˜คํ›„ 5์‹œ 39 ๋ถ„์— "Michael Bleigh" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ณด๊ฑฐ๋‚˜ ๋ณด์ง€ ๋ชปํ–ˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด์ œ Cloud Functions๊ฐ€ ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Firebase ํ˜ธ์ŠคํŒ… https://firebase.google.com/docs/hosting/functions
!!!

์ด๊ฒƒ์€ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์— ๋Œ€ํ•œ ํ‘œ์ค€ ์†”๋ฃจ์…˜์œผ๋กœ ๊ฐ„์ฃผ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Firebase ํ˜ธ์ŠคํŒ…์œผ๋กœ. ์ฆ๊ฒจ!

โ€”
๋Œ“๊ธ€์„ ๋‹ฌ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-302268864 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbtWCdygdw4ozixK5_XcL2Dlznp4Jks5r65M-gaJpZM4CtPYG
.

๋‚˜๋Š” ์ด๊ฒƒ์ด์ด ์˜๊ฒฌ์— ๋Œ€ํ•œ ์ตœ์„ ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋‚ด ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” Google์ด ๋‚˜๋ฅผ ์ด๋Œ์—ˆ๊ณ  ์ ๊ทน์ ์ธ ํ† ๋ก ์ด์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฏ€๋กœ ์šฉ์„œํ•˜์‹ญ์‹œ์˜ค!

firebase์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” SPA์—์„œ ์†Œ์…œ ์‚ฌ์ดํŠธ์˜ ์˜คํ”ˆ ๊ทธ๋ž˜ํ”„ ํ…œํ”Œ๋ฆฟ์„ ๋ Œ๋”๋งํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ฐ€๋ณด๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ memcache / cloudsql์—์„œ ์ผ๋ถ€ ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ๋ฅผ ์š”์ฒญํ•˜๋Š” ์†Œ์…œ ํ”Œ๋žซํผ์— ๋ Œ๋”๋งํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ •์  ํ˜ธ์ŠคํŒ…์œผ๋กœ ๋Œ€์ฒดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ์š”์ฒญ์— โ€‹โ€‹๋Œ€ํ•ด ์ „์ฒด ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@cdharris Totally, ATM, ๋‚ด๊ฐ€ window.location์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์  ํ˜ธ์ŠคํŒ…์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ฆฌ๋””๋ ‰์…˜ (ํด๋ผ์ด์–ธํŠธ / ๋ฐฉ๋ฌธ์ž ์šฉ)์„ ๋งŒ๋“ค๋ ค๊ณ  ์‹œ๋„ํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์š”์ฒญ์„ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. SEO ๋ชฉ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌํšŒ์  ๋ชฉ์ ์„ ์œ„ํ•ด.

@mbleigh ํฌ๋กค๋Ÿฌ / ์†Œ์…œ์˜ ์š”์ฒญ์„ ํด๋ผ์ด์–ธํŠธ / ๋ฐฉ๋ฌธ์ž์™€ ๊ตฌ๋ณ„ํ•˜์—ฌ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ glob ํ‘œํ˜„์‹ ์ค‘์—์„œ _escaped_fragment_๋กœ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค ... ์•„๋ฌด๊ฒƒ๋„ = / ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค

firebase ํ•จ์ˆ˜์—์„œ ๋ฌด์—‡์„ ๋ฐ˜ํ™˜ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์  ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค : ์š”๊ตฌ ์‚ฌํ•ญ์€ Facebot์—์„œ ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋Ÿฌํ•œ ์—ด๋ฆฐ ๊ทธ๋ž˜ํ”„ ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ index.html์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ firebase ํ•จ์ˆ˜์—์„œ darn index.html์„ ์–ด๋–ป๊ฒŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๊นŒ?

fs.readFileSync ( './ index.htm')

2017 ๋…„ 9 ์›” 13 ์ผ ์˜ค์ „ 4:34์— "Birowsky" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

Firebase ํ•จ์ˆ˜์—์„œ ์ฝ˜ํ…์ธ  ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งํ•  ์ˆ˜์žˆ๋‹ค:
์š”๊ตฌ ์‚ฌํ•ญ์€ Facebot์—์„œ ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋Ÿฌํ•œ ์—ด๋ฆฐ ๊ทธ๋ž˜ํ”„ ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด
index.html์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ป๊ฒŒํ•˜๋ฉด a์—์„œ darn index.html์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๊นŒ?
firebase ํ•จ์ˆ˜?

โ€”
๋Œ“๊ธ€์„ ๋‹ฌ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329140134 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbrXQNbVMhRmeZQTbx3Z3vi0c1HXTks5sh728gaJpZM4CtPYG
.

@megamindbrian ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ŠคํŒ… ๋œ ํŒŒ์ผ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Œ์„ ์•”์‹œํ•ฉ๋‹ˆ๊นŒ? ์–ด๋””์—๋‚˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด์จŒ๋“  ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค!

์˜ˆ. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

2017 ๋…„ 9 ์›” 13 ์ผ ์˜ค์ „ 7:09์— "Birowsky" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@megamindbrian https://github.com/megamindbrian ์€
ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ŠคํŒ… ๋œ ํŒŒ์ผ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋””์—๋‚˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?
์–ด์จŒ๋“  ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค!

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

์—ฌ๊ธฐ ํ•˜๋‚˜
https://stackoverflow.com/questions/42960506/how-can-i-read-and-write-to-firebase-storage-from-within-cloud-functions-for-fir

2017 ๋…„ 9 ์›” 13 ์ผ ์˜ค์ „ 7:09์— "Birowsky" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@megamindbrian https://github.com/megamindbrian ์€
ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ŠคํŒ… ๋œ ํŒŒ์ผ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋””์—๋‚˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?
์–ด์จŒ๋“  ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค!

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

์ด๊ฒƒ์€ ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ํŒŒ์ผ์—์„œ๋„ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ์™€ ํ•จ๊ป˜ ์—…๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ๋ณ€ ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ
์˜ˆ์ œ๋Š” ํŒŒ์ผ์„ ๋‹ค๋ฅธ ๊ณณ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์˜คํ”„๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://firebase.google.com/docs/storage/extend-with-functions

2017 ๋…„ 9 ์›” 13 ์ผ ์˜ค์ „ 7:12์— "Brian Cullinan" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ํ•˜๋‚˜ https://stackoverflow.com/questions/42960506/how-can-i-
Cloud-functions-for-fir์—์„œ firebase-storage-to-firebase-storage-to-read-and-write-to-firebase-storage-from-in-cloud-functions-for-fir

2017 ๋…„ 9 ์›” 13 ์ผ ์˜ค์ „ 7:09์— "Birowsky" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@megamindbrian https://github.com/megamindbrian ์€
ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ŠคํŒ… ๋œ ํŒŒ์ผ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋””์—๋‚˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?
์–ด์จŒ๋“  ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค!

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ŠคํŒ… ๋œ ํŒŒ์ผ์— ๊ฐœ๋…์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์†Œ๊ฐœ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค๋ช…ํ•ด ์ฃผ์‹œ๋ฉด ๋ช‡ ๊ฐ€์ง€ ํฌ์ธํŠธ๋ฅผ๋“œ๋ฆฝ๋‹ˆ๋‹ค : https://stackoverflow.com/q/46192570/592641

์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋‹ตํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
ํ•จ์ˆ˜ ๋‚ด์—์„œ ํŒŒ์ผ์˜ ์ฝ˜ํ…์ธ ๋กœ ์‘๋‹ต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์˜ ํ”„๋กœ์ ํŠธ? ๋ฆฌ๋””๋ ‰์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ํŒŒํ—ค์น  ๊ฒƒ์ด๋‹ค.

2017 ๋…„ 9 ์›” 13 ์ผ ์˜ค์ „ 7:18์— "Birowsky" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์†Œ๊ฐœ๊ฐ€ ์•„์ง ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฐœ๋…์ ์œผ๋กœ ํ˜ธ์ŠคํŒ… ๋œ ํŒŒ์ผ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์„ค๋ช… ํ•ด์ฃผ์‹ ๋‹ค๋ฉด
๋‹น์‹ ์„์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ํฌ์ธํŠธ : https://stackoverflow.com/q/46192570/592641

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329182385 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbnCSoaKUuVKUnfha5A-4K-p76kZ3ks5sh-QygaJpZM4CtPYG
.

@megamindbrian ๋ฐฉ๊ธˆ fs.readFileSync('./index.html') ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•ˆํƒ€๊น๊ฒŒ๋„ ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์•”์‹œ ์ ์œผ๋กœ ์ƒ์„ฑ ๋œ ์ผ๋ถ€ ์ €์žฅ์†Œ ๋ฒ„ํ‚ท์—์„œ ํ˜ธ์ŠคํŒ… ๋œ ํŒŒ์ผ์„ ์ฐพ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

ํ˜ธ์ŠคํŒ… public ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ functions ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— ์ค‘์ฒฉํ•˜๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Birowsky Yup, ๋‹ค์Œ์€ index.js์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์—์„œ ํŒŒ์ผ์„ ์ฝ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

const page = fs.readFileSync(__dirname + '/facebook-meta.html').toString();

๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์ ํŠธ ๋ ˆ์ด์•„์›ƒ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ :

project/
project/src (<- actual source of app)
project/functions ( <- firebase functions)
project/dist (<- build output)

/ dist in์—์„œ / functions๋กœ ๊ด€๋ จ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์•Œ ๋ชจ์Šค๊ฐ€ 3 ๋…„ (์ง€๊ธˆ๊นŒ์ง€) ์žˆ์—ˆ์ง€๋งŒ ์•„์ง ์šด์ด ์—†๋‹ค ????

์•„๋งˆ ๊ตฌ๊ธ€์ด ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๋„์ค‘์— ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋ฅผ ํฌ๊ธฐํ•  ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ์•ฑ.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ณต์‹ ์†”๋ฃจ์…˜์€ Cloud Functions๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ •์ ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด์•ผํ•˜๋Š” ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
๊ฒ‰์˜ท:

https://firebase.google.com/docs/hosting/functions

์ด๊ฒƒ์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ž‘์—…์„ ํ—ˆ์šฉํ•˜๋Š”๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ณ  ์ผ๋ฐ˜ํ™” ๋œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.
๋ฉ‹์ง„ ๊ฒƒ๋“ค!

์•„์ง ๋น ์ง„ ๊ฒƒ์ด ์žˆ๋‹ค๊ณ  ๊ฐ•ํ•˜๊ฒŒ ๋Š๋ผ์‹œ๋ฉด
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž์„ธํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€! :)

2017 ๋…„ 9 ์›” 14 ์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 3:57 Brian Cullinan [email protected]
์ผ๋‹ค :

์•„๋งˆ๋„ ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ์ค‘๊ฐ„์— firebase๋ฅผ ํฌ๊ธฐํ•œ Google์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ์•ฑ.

2017 ๋…„ 9 ์›” 14 ์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 3:52, tofanelli [email protected]
์ผ๋‹ค :

์ด ๋ฌธ์ œ๋Š” ์•Œ ๋ชจ์Šค๊ฐ€ 3 ๋…„ (์ง€๊ธˆ๊นŒ์ง€) ์žˆ์—ˆ์ง€๋งŒ ์•„์ง ์šด์ด ์—†๋‹ค ????

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
<
https://github.com/firebase/firebase-tools/issues/33#issuecomment -329630338
,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
<
https://github.com/notifications/unsubscribe-auth/AX5XbhBSDSl6TStSv7M02Dx0brb9MOPbks5sia44gaJpZM4CtPYG

.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329631266 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAD_iI6L-yu3RTECI88a2y_ZOzIxdDQks5sia9rgaJpZM4CtPYG
.

@mbleigh ์•„์ง firebase ๋„๋ฉ”์ธ์˜ ๋ฃจํŠธ์—์„œ ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๋‚ด๊ฐ€ ๋‹น์‹ ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด. ์ „์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

2017 ๋…„ 9 ์›” 14 ์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 6:38 Brian Cullinan [email protected]
์ผ๋‹ค :

@mbleigh https://github.com/mbleigh ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์•„์ง firebase ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329653711 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAD_g7BV3TMM_5nVX92_-3ai_mZHfHBks5sidUvgaJpZM4CtPYG
.

@mbleigh

์ด๊ฒƒ์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฉ‹์ง„ ๊ฒƒ๋“ค์„ ํ—ˆ์šฉํ•˜๋Š” ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ์ผ๋ฐ˜ํ™” ๋œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค!

SSR์€ ์‹œ์Šคํ…œ์„ ๋” ๋ณต์žก ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค ๐Ÿ˜ข
์‚ฌ์ „ ๋ Œ๋”๋ง์ด ํ•ญ์ƒ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ž์ฃผ ๐Ÿ’ก
์˜ˆ : Facebook OGP, Twitter ์นด๋“œ, Google ์ด์™ธ์˜ SEO

@mbleigh @megamindbrian ๊ท€ํ•˜์˜ ๋ฉ”์‹œ์ง€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ชจ๋“  ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ  functions/build/index.html ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” index.html ๋Œ€ํ•œ ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ์— ํ˜ธ์ŠคํŒ…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ FaceBot์—์„œ ์˜ค๋Š” ์š”์ฒญ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด ์›น ์‚ฌ์ดํŠธ์˜ URL์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์Šค ๋ถ ๋””๋ฒ„๊น… ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜์ง€๋งŒ ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์ด ํŠธ๋ฆฌ๊ฑฐ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํžŒํŠธ๋ฅผ ์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ.

Facebooks ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฝ๋Š” ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ทผ์ฒ˜์— "์ƒˆ ์‚ฌ๋ณธ ๊ฐ€์ ธ ์˜ค๊ธฐ"์™€ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

2017 ๋…„ 10 ์›” 17 ์ผ ํ™”์š”์ผ ์˜ค์ „ 8:29์— Jude [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrian ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ€์ง€๊ณ ์žˆ๋‹ค
๋‚ด ํ˜ธ์ŠคํŒ…์ด ๋ชจ๋“  ์š”์ฒญ์„ ๋‚ด ๊ธฐ๋Šฅ๊ณผ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌํ•˜๋„๋กํ–ˆ์Šต๋‹ˆ๋‹ค
functions / build / index.html์—์„œ ํด๋ผ์ด์–ธํŠธ์— ํ˜ธ์ŠคํŒ…๋˜๋Š” index.html. ๊ทธ๋Ÿฌ๋‚˜
FaceBot์—์„œ ์˜ค๋Š” ์š”์ฒญ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹œ๋„ํ–ˆ๋‹ค
๋‚ด ์›น ์‚ฌ์ดํŠธ์˜ URL์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์Šค ๋ถ ๋””๋ฒ„๊น… ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์ด ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ, ํžŒํŠธ๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
๊ธฐ๋ฐ€ ์œ ์ง€ ์•Œ๋ฆผ :์ด ์ด๋ฉ”์ผ ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ๊ณผ
์ฒจ๋ถ€ ํŒŒ์ผ์€ ์ˆ˜์ทจ์ธ๋งŒ์„์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ
๊ธฐ๋ฐ€ ๋ฐ / ๋˜๋Š” ํŠน๊ถŒ ์ •๋ณด์ด๋ฉฐ ๋ฒ•์ ์œผ๋กœ ๋ณดํ˜ธ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณต๊ฐœ์—์„œ. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ์ˆ  ํšŒ์‚ฌ, ๋ด‡, ํ•ด์ปค,
์ •๋ถ€ ๊ธฐ๊ด€ ๋ฐ ๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž. ์ด ๋ฉ”์‹œ์ง€์˜ ๋ณด์•ˆ์€ ์—†์Šต๋‹ˆ๋‹ค.
์–ธ์ œ๋“ ์ง€ Instagram์—์„œ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์œผ ์‹œ๋‹ค๋ฉด
์‘๋‹ตํ•˜์‹ญ์‹œ์˜ค. ์‹ค์ œ๋กœ ๋ณด์•ˆ์ด๋‚˜ ๊ฐœ์ธ ์ •๋ณด๋Š” ์–ด๋””์—๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ
๋‹น์‹ ์€ ์บ ํ•‘์— ๊ฐ€์„œ ์‚ฌ๋žŒ๋“ค๊ณผ ์–ผ๊ตด์„ ๋งž๋Œ€๊ณ  ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜›๋‚ ์ฒ˜๋Ÿผ.

Firebase ๋กœ๊ทธ์— 'ํ•จ์ˆ˜ ์‹คํ–‰ ์‹œ์ž‘๋จ'๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

2017 ๋…„ 10 ์›” 17 ์ผ ํ™”์š”์ผ ์˜ค์ „ 8:37, Brian Cullinan [email protected]
์ผ๋‹ค :

Facebooks ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ทผ์ฒ˜์— "์ƒˆ ์‚ฌ๋ณธ ๊ฐ€์ ธ ์˜ค๊ธฐ"์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

2017 ๋…„ 10 ์›” 17 ์ผ ํ™”์š”์ผ ์˜ค์ „ 8:29์— Jude [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrian ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ€์ง€๊ณ ์žˆ๋‹ค
๋‚ด ํ˜ธ์ŠคํŒ…์ด ๋ชจ๋“  ์š”์ฒญ์„ ๋‚ด ๊ธฐ๋Šฅ๊ณผ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌํ•˜๋„๋กํ–ˆ์Šต๋‹ˆ๋‹ค
functions / build / index.html์—์„œ ํด๋ผ์ด์–ธํŠธ์— ํ˜ธ์ŠคํŒ…๋˜๋Š” index.html. ๊ทธ๋Ÿฌ๋‚˜
FaceBot์—์„œ ์˜ค๋Š” ์š”์ฒญ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹œ๋„ํ–ˆ๋‹ค
๋‚ด ์›น ์‚ฌ์ดํŠธ์˜ URL์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์Šค ๋ถ ๋””๋ฒ„๊น… ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์ด ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ, ํžŒํŠธ๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
๊ธฐ๋ฐ€ ์œ ์ง€ ์•Œ๋ฆผ :์ด ์ด๋ฉ”์ผ ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ๊ณผ
์ฒจ๋ถ€ ํŒŒ์ผ์€ ์ˆ˜์ทจ์ธ๋งŒ์„์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ
๊ธฐ๋ฐ€ ๋ฐ / ๋˜๋Š” ํŠน๊ถŒ ์ •๋ณด์ด๋ฉฐ ๋ฒ•์ ์œผ๋กœ ๋ณดํ˜ธ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณต๊ฐœ์—์„œ. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ์ˆ  ํšŒ์‚ฌ, ๋ด‡, ํ•ด์ปค,
์ •๋ถ€ ๊ธฐ๊ด€ ๋ฐ ๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž. ์ด ๋ฉ”์‹œ์ง€์˜ ๋ณด์•ˆ์€ ์—†์Šต๋‹ˆ๋‹ค.
์–ธ์ œ๋“ ์ง€ Instagram์—์„œ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์œผ ์‹œ๋‹ค๋ฉด
์‘๋‹ตํ•˜์‹ญ์‹œ์˜ค. ์‹ค์ œ๋กœ ๋ณด์•ˆ์ด๋‚˜ ๊ฐœ์ธ ์ •๋ณด๋Š” ์–ด๋””์—๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ
๋‹น์‹ ์€ ์บ ํ•‘์— ๊ฐ€์„œ ์‚ฌ๋žŒ๋“ค๊ณผ ์–ผ๊ตด์„ ๋งž๋Œ€๊ณ  ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜›๋‚ ์ฒ˜๋Ÿผ.

-
๊ธฐ๋ฐ€ ์œ ์ง€ ์•Œ๋ฆผ :์ด ์ด๋ฉ”์ผ ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ๊ณผ
์ฒจ๋ถ€ ํŒŒ์ผ์€ ์ˆ˜์ทจ์ธ๋งŒ์„์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ
๊ธฐ๋ฐ€ ๋ฐ / ๋˜๋Š” ํŠน๊ถŒ ์ •๋ณด์ด๋ฉฐ ๋ฒ•์ ์œผ๋กœ ๋ณดํ˜ธ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณต๊ฐœ์—์„œ. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ์ˆ  ํšŒ์‚ฌ, ๋ด‡, ํ•ด์ปค,
์ •๋ถ€ ๊ธฐ๊ด€ ๋ฐ ๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž. ์ด ๋ฉ”์‹œ์ง€์˜ ๋ณด์•ˆ์€ ์—†์Šต๋‹ˆ๋‹ค.
์–ธ์ œ๋“ ์ง€ Instagram์—์„œ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์œผ ์‹œ๋‹ค๋ฉด
์‘๋‹ตํ•˜์‹ญ์‹œ์˜ค. ์‹ค์ œ๋กœ ๋ณด์•ˆ์ด๋‚˜ ๊ฐœ์ธ ์ •๋ณด๋Š” ์–ด๋””์—๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ
๋‹น์‹ ์€ ์บ ํ•‘์— ๊ฐ€์„œ ์‚ฌ๋žŒ๋“ค๊ณผ ์–ผ๊ตด์„ ๋งž๋Œ€๊ณ  ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜›๋‚ ์ฒ˜๋Ÿผ.

๋ธŒ๋ผ์šฐ์ €๋กœ ๋‚ด ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด @megamindbrian ๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ ์˜ค๊ธฐ ์œ„ํ•ด facebook ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ํ›„์—๋Š” ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@judewang https://firebase.google.com/docs/hosting/functions#when_is_cached_content_served ์‚ดํŽด๋ณด๊ธฐ

๋น ๋ฅด๊ณ  ๋”๋Ÿฌ์šด ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ๋œ URL์— ์ž„์˜์˜ ์ฟผ๋ฆฌ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ดˆ๊ธฐ ์งˆ๋ฌธ์€ ์‚ฌ์ „ ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์€ ์‚ฌ์ „ ๋ Œ๋”๋ง ํ†ตํ•ฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹จ์ผ ํŽ˜์ด์ง€ ์•ฑ์— ๋Œ€ํ•œ ์—ด๋ฆฐ ๊ทธ๋ž˜ํ”„๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  1. ๋‚ด ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์—์„œ public/index.html ์„ functions/hosting/index.html ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  2. firebase.json "host"๋ผ๋Š” ํด๋ผ์šฐ๋“œ ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์žฌ ์ž‘์„ฑ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
"hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "host"
      }
    ]
  }
  1. host ๋ผ๋Š” ํด๋ผ์šฐ๋“œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ functions/hosting/index.html ๋ณต์‚ฌ ํ•œ index.html ํŒŒ์ผ์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์—์ด์ „ํŠธ๊ฐ€ ์•Œ๋ ค์ง„ ๊ฐœ๋ฐฉํ˜• ๊ทธ๋ž˜ํ”„ ํŒŒ์„œ ์ค‘ ํ•˜๋‚˜ ์ธ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋…ธ์„ .
exports.host = functions.https.onRequest((req, res) => {
  var userAgent = req.headers['user-agent'];
  if (userAgent.startsWith('facebookexternalhit/1.1') ||
    userAgent === 'Facebot' ||
    userAgent.startsWith('Twitterbot')){

    //getOpenGraph() parses the path, and gets some data from the firebase database to construct open graph data.
    // eg: <meta property="og:description" content="My super cool webpage." /> <meta property="og:title"...

    res.status(200).send(getOpenGraph(req.path));
  }
  else{
    //optional - turn on caching: res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
    res.status(200).send(fs.readFileSync('./hosting/index.html').toString());
  }
});

๊ทธ๊ฒŒ ๋‹ค๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ด๊ฒƒ์ด ์‹ค๋ง ์Šค๋Ÿฝ๋‹ค๊ณ  ๋งํ•ด์•ผํ•˜๋Š”๋ฐ, https://www.netlify.com/features/ ์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ๊ฒฝ์Ÿ์ž๋“ค์ด ์ด๊ฒƒ์„ ๋‚ด๋ ค์„œ SEO / ์†Œ์…œ ํ†ตํ•ฉ์ด ํ•„์š”ํ•œ ์›น ์•ฑ์— ํ™•์‹คํžˆ ๋” ๋งค๋ ฅ์ ์ž…๋‹ˆ๋‹ค.

Firebase๋Š” ๋ชจ๋ฐ”์ผ / ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ์ฃฝ์ด๊ณ  ์žˆ์œผ๋ฉฐ ์ „๋ฐ˜์ ์œผ๋กœ ํ”Œ๋žซํผ์œผ๋กœ์„œ ์ •๋ง ์ฆ๊ธฐ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์›น ์•ฑ IMO์— ๋Œ€ํ•œ ๊ฝค ํฐ ๊ฒฐํ•จ์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์ „ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ ๋Š” ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์—์„œ ๊ฐ€์žฅ ์ž˜ ์ œ๊ณต๋˜๋Š” ์ฝ˜ํ…์ธ ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค (์„ฑ๋Šฅ ๋ฐ ์ฒซ๋กœ๋“œ ์ด์œ ๋กœ ์ธํ•ด). ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ผ๋ฐ˜ ์‚ฌ์ „ ๋ Œ๋”๋ง์€ ์ฆ‰๊ฐ์ ์ธ ๋กœ๋“œ๋งต์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฆ‰, "๋•Œ๋•Œ๋กœ"ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ์ˆ˜ ํ†ตํ•ฉ์ด ๋” ์œ ์—ฐ ํ•ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Firebase ํ˜ธ์ŠคํŒ…์€ CDN ์บ์‹ฑ์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์œ ์—ฐ์„ฑ์€ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋‹ฌ์„ฑํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ ํ”ผ๋“œ๋ฐฑ์„ ๊ฒฝ์ฒญํ•˜๊ณ  ๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๊ฒŒ ํ”Œ๋žซํผ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :๋ฏธ์†Œ:

๊ธฐ๋Šฅ์„ ๋„๋ฉ”์ธ ์ „๋ฉด์— ์ง์ ‘ ์—ฐ๊ฒฐํ•˜๊ธฐ์œ„ํ•œ Firebase์˜ UI
์ด๋ฆ„์€ ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ˆ˜์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https : //us-central1-...dsaflk; sdafkljsdafkl; jsdf;
lkjsadfkljasdfkljsdaflk.cloudfunctions.net

2018 ๋…„ 1 ์›” 5 ์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 3:33, Michael Bleigh [email protected]
์ผ๋‹ค :

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์ „ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ ๋„
์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์—์„œ ๊ฐ€์žฅ ์ž˜ ์ œ๊ณต๋˜๋Š” ์ฝ˜ํ…์ธ  (์„ฑ๋Šฅ ๋ฐ
์ฒซ ๋ฒˆ์งธ๋กœ๋“œ ์ด์œ ). ์ผ๋ฐ˜์ ์ธ ์‚ฌ์ „ ๋ Œ๋”๋ง์€ ์ฆ‰๊ฐ์ ์ธ ๋กœ๋“œ๋งต์— ์—†์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฐ ์ด์œ ๋กœ.

์ฆ‰, ์šฐ๋ฆฌ๋Š” ์›ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
"๋•Œ๋•Œ๋กœ"๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•˜๋„๋ก๋ณด๋‹ค ์œ ์—ฐํ•˜๊ฒŒ ๊ธฐ๋Šฅ ํ†ตํ•ฉ
์‹คํ–‰. Firebase ํ˜ธ์ŠคํŒ…์€ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ CDN ์บ์‹ฑ์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์—
์œ ์—ฐ์„ฑ์„ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋‹ฌ์„ฑํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•  ๊ฒƒ์ด๋‹ค
ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๊ณ  ๋” ๋‚˜์€ ํ”Œ๋žซํผ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ ์‚ฌ๋ก€. ๐Ÿ˜„

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/33#issuecomment-355683821 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX5XbtVDQSPOIAZFyozujQQUektf2WM1ks5tHqM8gaJpZM4CtPYG
.

-
"๋‚˜๋Š” ๊ณตํ•™์„ ๊ณต๋ถ€ํ–ˆ๋‹ค"

๊ธฐ๋ฐ€ ์œ ์ง€ ์•Œ๋ฆผ :์ด ์ด๋ฉ”์ผ ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ๊ณผ
์ฒจ๋ถ€ ํŒŒ์ผ์€ ์ˆ˜์ทจ์ธ๋งŒ์„์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ
๊ธฐ๋ฐ€ ๋ฐ / ๋˜๋Š” ํŠน๊ถŒ ์ •๋ณด์ด๋ฉฐ ๋ฒ•์ ์œผ๋กœ ๋ณดํ˜ธ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณต๊ฐœ์—์„œ. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ์ˆ  ํšŒ์‚ฌ, ๋ด‡, ํ•ด์ปค,
์ •๋ถ€ ๊ธฐ๊ด€ ๋ฐ ๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž. ์ด ๋ฉ”์‹œ์ง€์˜ ๋ณด์•ˆ์€ ์—†์Šต๋‹ˆ๋‹ค.
์–ธ์ œ๋“ ์ง€ Instagram์—์„œ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์œผ ์‹œ๋‹ค๋ฉด
์‘๋‹ตํ•˜์‹ญ์‹œ์˜ค. ์‹ค์ œ๋กœ ๋ณด์•ˆ์ด๋‚˜ ๊ฐœ์ธ ์ •๋ณด๋Š” ์–ด๋””์—๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ
๋‹น์‹ ์€ ์บ ํ•‘์— ๊ฐ€์„œ ์‚ฌ๋žŒ๋“ค๊ณผ ์–ผ๊ตด์„ ๋งž๋Œ€๊ณ  ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜›๋‚ ์ฒ˜๋Ÿผ.

@mbleigh ๋Š”์ด ๊ด€์ ์ด ์„œ๋ฒ„๋ฆฌ์Šค์˜ ์ •์‹ ๊ณผ ๋‹ค์†Œ ๋ฐ˜๋Œ€๋˜์ง€ ์•Š์œผ๋ฉฐ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์™€ ๊ฐ™์€ BaaS / FaaS ๊ณต๊ธ‰์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ SPA๋กœ ํ–ฅํ•˜๋Š” ์ถ”์„ธ์— ๋”ฐ๋ผ ์ด๊ฒƒ์€ ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ด๋ฏ€๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด netlify ๋ฐ roast์™€ ๊ฐ™์€ ๊ฒฝ์Ÿ์ž๊ฐ€ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๊ธฐ๋Š” ์ž‘์ง€๋งŒ์ด๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ค‘์š”ํ•œ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ๊ณต์œ  ๊ฐ€๋Šฅ์„ฑ๊ณผ ํ•จ๊ป˜ ๋” ๋น ๋ฅธ๋กœ๋“œ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

๊ณ ๊ฐ์„์œ„ํ•œ ์ถ”๊ฐ€ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ ์˜ค๋ฒ„ ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์„ ํƒ์  ์‚ฌ์ „ ๋ Œ๋”๋ง ์„œ๋น„์Šค ๋˜๋Š” ์ตœ์†Œํ•œ prerender.io์™€ ๊ฐ™์€ ํƒ€์‚ฌ ์„œ๋น„์Šค์™€ ํ†ตํ•ฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Firebase๋Š” ์ •๋ง ํ›Œ๋ฅญํ•œ ํ”Œ๋žซํผ์ด์ง€๋งŒ ํ˜ธ์ŠคํŒ…์ด ์ €์—๊ฒŒ ์œ ์ผํ•˜๊ฒŒ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด๋ฏ€๋กœ ๋ชจ๋ฐ”์ผ ์ง€ํ–ฅ์ ์ž…๋‹ˆ๋‹ค.

์‹ ์†ํ•œ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@mbleigh

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์ „ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ ๋Š” ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์—์„œ ๊ฐ€์žฅ ์ž˜ ์ œ๊ณต๋˜๋Š” ์ฝ˜ํ…์ธ ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค (์„ฑ๋Šฅ ๋ฐ ์ฒซ๋กœ๋“œ ์ด์œ ๋กœ ์ธํ•ด).

@Pushplaybang ์˜ ํ˜„์žฅ ์ฃผ์žฅ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ท€ํ•˜์˜ ์ฃผ์žฅ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ์„ ,์ด ์˜์—ญ์—์„œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ž (์ฆ‰, ์—ฌ๋Ÿฌ๋ถ„์ด ์•„๋‹˜)์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ํŽ˜์ด์ง€ ์„ฑ๋Šฅ ๊ณ ๋ ค ์‚ฌํ•ญ์€ ๋‹ค๋ฅธ ๋˜‘๊ฐ™์ด ์ค‘์š”ํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •๊ณผ ๊ท ํ˜•์„ ์ด๋ฃจ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ํŽ˜์ด์ง€ ์•ฑ ๋˜๋Š” ์•ฑ ์„น์…˜์€ ์–ด๋Š ์ •๋„ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ Œ๋”๋ง์— ์˜์กดํ•ด์•ผํ•˜๋ฉฐ, ์•ˆํƒ€๊น๊ฒŒ๋„ Google ์ž์ฒด๋ฅผ ํฌํ•จํ•œ ํฌ๋กค๋Ÿฌ๋Š” ์•„์ง ์ด๋Ÿฌํ•œ ํŽ˜์ด์ง€์˜ ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ตฌ๊ธ€์ด ๋‚ด ์›น ์‚ฌ์ดํŠธ๋ฅผ ์ œ๋Œ€๋กœ ์ธ๋ฑ์‹ฑ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช‡ ๋‹ฌ๊ฐ„ ์‹คํŒจํ•œ ํ›„ PrerenderIO์— ์˜์ง€ํ•ด์•ผํ–ˆ๋‹ค. ์ด๊ฒƒ์€ ์ธ๋ฑ์‹ฑ ๋ฌธ์ œ๋ฅผ ์œ„ํ•ด __ ๋‹จ์ง€ __ ๋‹จ์ง€ _______________________________________ ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์œ ์ง€ํ•˜๋„๋ก ๊ฐ•์š”ํ–ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๊ฐ์ง€ ๋œ ๋”ฅ URL์— ๋”ฐ๋ผ ๋ชจ๋“  ์ œํ’ˆ์„ ๋ Œ๋”๋งํ•˜๋Š” /product/**.html ํŽ˜์ด์ง€๊ฐ€์žˆ๋Š” ์›น ์‚ฌ์ดํŠธ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์‹ญ์‹œ์˜ค. ์ด ๋””์ž์ธ์˜ ๊ทผ๊ฑฐ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ฐ cdn ์บ์‹ฑ์„ ๊ณ ๋ คํ•˜๋”๋ผ๋„ ์ œํ’ˆ์— ๋Œ€ํ•œ ์‹ค์ œ ๋ณ„๋„ ํŽ˜์ด์ง€๋ฅผ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ์ œํ’ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ๋กœ๋“œํ•˜๊ณ  URL์„ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ๋งŒ ํผ UX ๊ด€์ ์—์„œ ๋ถ€๋“œ๋Ÿฝ ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ๊ฐ์€ ์ „์ž ์ƒ๊ฑฐ๋ž˜ ์›น ์‚ฌ์ดํŠธ์—์„œ browsign-to-buy๋ฅผ ํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ์ œํ’ˆ ํŽ˜์ด์ง€์—์„œ ๋ณด๋‚ด๊ณ  "๊ด€๋ จ ์ œํ’ˆ"๋งํฌ ๋˜๋Š” ํŽ˜์ด์ง€ ๋‚ด ajax ๊ฒ€์ƒ‰ ๋งํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์ œํ’ˆ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์€ํ์— ๋Œ€ํ•œ ์ฒ˜๋ฒŒ์„๋ฐ›์ง€ ์•Š๋„๋ก ์–ด๋ฆฌ์„์€ (IMHO) _escaped_fragment_ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ณ ์ˆ˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Google์€์ด ์œ ๋น„์ฟผํ„ฐ์Šค ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊น”๋”ํ•œ ์†”๋ฃจ์…˜์„ ๊ฐ€์ง„ ์—”์ง€๋‹ˆ์–ด๋ฅผ ๊ณ ์šฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๊นŒ ??

__unjustifiable__ ๋ฌธ์„œ์—์„œ ์›น ์‚ฌ์ดํŠธ / ์›น์•ฑ ์ƒ‰์ธ ์ƒ์„ฑ ์„น์…˜์ด ์ „ํ˜€ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋ฐ”์ผ ์•ฑ์ด ์†Œ๋น„์ž ์‹œ์žฅ์„ ์ง€๋ฐฐ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ B2B๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋ฌด์‹ค ๋ถ€์„œ๋Š” ๋ฐ์Šคํฌํ†ฑ ์ปดํ“จํ„ฐ์—์„œ ์šด์˜๋ฉ๋‹ˆ๋‹ค. R & D ๋˜๋Š” ๊ตฌ๋งค ๋ถ€์„œ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์Šคํฌํ†ฑ ์›น ์‚ฌ์ดํŠธ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋Š” ๊ฒƒ์€ "๊ฐ–๊ธฐ ์ข‹์€"๊ฒƒ์ด ์•„๋‹ˆ๋ผ B2B ๊ณต๊ธ‰ ์—…์ฒด ๋น„์ฆˆ๋‹ˆ์Šค์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์ง์ด๋Š” ๊ฐ€์ ฏ์—์„œ ์‹คํ–‰๋˜๋Š” ํ™”๋ คํ•œ ์•ฑ์ด ๋” ๋งŽ์€ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— Firebase / Google์ด ์ด์— ๊ด€์‹ฌ์ด ์—†๋‹ค๋ฉด ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถฉ์„ฑ์Šค๋Ÿฌ์šด ๊ธฐ์ˆ  ์ฑ„ํƒ ์ž๋“ค์—๊ฒŒ 4 ๋…„ ๋™์•ˆ ํšŒํ”ผ์ ์ธ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์ •๋ณด์— ์ƒ๋‹นํžˆ ๋ชจ์š•์ ์ž…๋‹ˆ๋‹ค.

Ranty? ์˜ˆ,ํ•˜์ง€๋งŒ ์ถ”๊ฐ€ ์ธํ”„๋ผ ๋น„์šฉ์ด ์ถ”๊ฐ€ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์— ์†Œ์š”๋˜๊ณ  ํฌ๋กค๋Ÿฌ๊ฐ€ ๊ณ ๊ฐ์—๊ฒŒ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘์„ํ•˜๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ 4 ๋…„ ๋™์•ˆ ๊ณต๊ฐœ ๋œ ๊ฒƒ์€ ์•ฝ๊ฐ„ ์–ด๋ฆฌ์„์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. @cleverplatypus- ๊ท€ํ•˜์˜ ๊ฐ์ •์— ๋” ๋™์˜ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ ์˜์—ญ์€ ์ „๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์„ ์ค‘๋‹จ ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ์ง€๋งŒ, ํƒˆ์ถœ ๋œ ์กฐ๊ฐ ์‚ฌ์ „ ๋ Œ๋”๋ง์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์ ์ธ ๊ณ„ํš์€ ์•„์ง ์—†์Šต๋‹ˆ๋‹ค.

์ •์  ๋‹จ์ผ ํŽ˜์ด์ง€ ์•ฑ์ด ์‚ฌ์ „ ๋ Œ๋”๋ง์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ถ„๋ช…ํžˆ ์žˆ์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์‚ฌ์ดํŠธ์˜ ๋Œ€๋ถ€๋ถ„ (์ „๋ถ€๋Š” ์•„๋‹˜)์—์„œ ์–ด๋–ค URL์—์„œ๋“  SPA๋ฅผ ๋ถ€ํŠธ ์ŠคํŠธ๋žฉ ํ•  ์ˆ˜์žˆ๋Š” ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์— ์˜ํ•ด ๋” ๋‚˜์€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” Firebase ํ˜ธ์ŠคํŒ…์„ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์›น ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ํ™˜์ƒ์ ์ธ ํ”Œ๋žซํผ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ์ œ๊ณต ํ•œ ์†”์งํ•˜๊ณ  ์—ด์ •์  ์ธ ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์ œํ•œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ „์ฒด ๊ณ ๊ฐ ๊ธฐ๋ฐ˜์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜๋Š” ์ž‘์—…์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•ํ•˜๊ฒŒ ๋Š๋ผ๋Š” ๊ธฐ๋Šฅ์˜ ์šฐ์„  ์ˆœ์œ„ ์ง€์ •์— ๋Œ€ํ•œ ๋งˆ์Œ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๊ธฐ๋Šฅ ์š”์ฒญ ์„

๋Œ€ํ™”๋ฅผ ์ง„ํ–‰ํ•  ๊ณต๊ฐ„์ด ์‹ค์ œ๋กœ ๋‚จ์•„ ์žˆ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ซ์œผ๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ Cloud Functions ํ†ตํ•ฉ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ œ๋Œ€๋กœ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ์€ ์‚ฌ์ „ ๋ Œ๋”๋ง์„์œ„ํ•œ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ œ์ถœํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์š”๊ฐ€ ์–ผ๋งˆ๋‚˜ ํฐ์ง€ ์ง์ ‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

Firebase ํ˜ธ์ŠคํŒ…์„ ์‚ฌ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ๐Ÿ˜ธ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰