CSR์ ๋ํ์ ์ธ ๋จ์ ์ค ํ๋์ธ ์ทจ์ฝํ SEO ์ ์์ ๋ชจ๋ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์น ์ ๊ทผ์ฑ ๊ฐ์ ์์
์ ์ํํด์ผํ๋ค. ์น ์ ๊ทผ์ฑ๊ณผ SEO์ ๊ฐ์ ํ๊ธฐ ์ด์ ์ ์ ์์ด๋ค.์ ๊ทผ์ฑ์ ํ์ด์ง ๋ง๋ค ์์ดํ์ง๋ง, ๊ฐ์ฅ ๋ฎ์ ๋ฉ์ธํ์ด์ง์ ์ ์๊ฐ 69์ , SEO ์ ์๋ 83์ ์ ๊ธฐ๋กํ์๋ค. SEO : ๊ฒ์์์ง ์ต์ ํ๐ React์ SEO๋ฆฌ์กํธ์ ๊ฐ์ SPA๋ SSR๊ณผ๋ ๋ฌ๋ฆฌ, ์ด๊ธฐ์ HTML์ด ์ต์ํ์ ๋ด์ฉ์ ํฌํจํ๊ณ , ๋๋ถ๋ถ์ ์ฝํ
์ธ ๋ JS๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ธก์์ ๋ ๋๋ง์ด ๋๋ ๋ฐฉ์์ด๋ค. ๋ชจ๋ ํฌ๋กค๋ฌ๊ฐ ์๋ ๋ง์ ํฌ๋กค๋ฌ๋ค์ด JS๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋ค.(๊ตฌ๊ธ๋ด์ JS๋ฅผ ์ง์ํด์ SEO๊ฐ ๋์์ง ์๋ค๊ณ ํจ)Next.js๋ฅผ ์ด์ฉํ ํ๋ก์ ํธ์์๋ ๋ณ๋ค๋ฅธ ์์
์ ..
์งํ์ค์ธ ํ๋ก์ ํธ๋ ๋ฐ๋ ค๋๋ฌผ์ ๊ธฐ๋ก๊ณผ ์ฌ์ง ๊ณต์ ๊ฐ ์ฃผ๋ ๊ธฐ๋ฅ์ธ ๋งํผ, ์ด๋ฏธ์ง ์ต์ ํ ์์
์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.๋ฒ๋ค์ฌ์ด์ฆ๋ฅผ ์ด์ฌํ ์ค์ฌ๋ KB๋จ์์ง๋ง.. ์ด๋ฏธ์ง๋ ๋จ์๋ถํฐ MB์ด๋ฏ๋ก, ์ด๋ฏธ์ง ์ต์ ํ๋ ํ์์ด๋ค. Next.js์ ์ด๋ฏธ์ง ์ต์ ํNext.js๋ next/image๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ด๋ฏธ์ง ์ต์ ํ ์์
์ ์ํํด์ค๋ค.But, ๋ฆฌ์กํธ๋ ์ด์ ๊ฐ์ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ์ง ์์ผ๋ฏ๋ก, ์ง์ ์ต์ ํ ์์
์ ์ํํด์ผํ๋ค...!๐ซฃ ์๋ resizingWebp ๊ฐ์ ์ต์ ์ด๋ฏธ์ง ํฌ๋งท ์ง์Lazy Loading๋ก ํ์ด์ง ๋ก๋ฉ ์๋ ํฅ์CDN ์ง์์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์ํ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ ๊ณต๋ถํด๋ฉด์, ์ ์ฉํด๋ณด์๋ค. 1. browser-image-compression ํ์ฉํ ์ด๋ฏธ์ง ํญ, ํ..
์ฌ์ง ๊ณต์ ๊ฐ ๋ฉ์ธ ์๋น์ค ํน์ฑ ์, ํ
์คํธ๋ณด๋จ ์ด๋ฏธ์ง์ ๊ด์ฌ๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง๋ฅผ ๋จผ์ ๋ฐฐ์นํ์๋ค. ๊ทธ๋ฌ๋ค๋ณด๋, ์ฐ๋ คํ๋๋๋ก ์ด๋ฏธ์ง๊ฐ ๋ก๋ฉ๋๊ณ ๋์ ํ
์คํธ๊ฐ ๋ฐ๋ฆฌ๊ฒ๋๋ฉด์ ๋๊ท๋ชจ ๋ ์ด์์ ํ์์ด ๋ฐ์ํ์๋ค. ์ฌ๋ฌ์ฅ์ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ์ CLS ์ ์๊ฐ 0.8๋ก ์ด๋ง์ด๋งํ๋ค... ๐๐ป placeholder๋ก ๋ ์ด์์์ด ๋ฐ๋ฆฌ๋ ํ์์ ๋ฐฉ์งํ๋ ค๊ณ ํ๋ค. โ๏ธ ๋ฌธ์ ์ ์ฒ์์ ์ด๋ฏธ์ง๋ฅผ ์
๋ก๋ํ๋ ์ฌ์ฉ์ ์
์ฅ์์, ๊ฒ์๋ฌผ์ ์ด๋ฏธ์ง๊ฐ ๊ท์ ๋ ์ฌ์ด์ฆ (1:1, 3:4)์ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง ์๋ฆผํ์์ด ๋ฐ์ํ๋๊ฒ์ ํผํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ์ด์ ๊ฐ์ด ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ ์ ์ํ ์ ์์๋ค.ํ์ง๋ง, ์ด ๋ฐฉ์์ ์ ์งํ๋ค๋ฉด ๊ธฐ์กด์ ์๋ณธ๋น์จ์ ์ด๋ฏธ์ง ๋ก๋ฉ์ ์ ์์๊ฐ ์๋ค๋ณด๋ placeholder์ ์ ์ํ๊ธฐ๊ฐ ๋๊ฐํด์ง๋คplaceholder๋ง ..
โ๏ธfirebase store์์๋ ๋ถ๋ถ ํ
์คํธ ๊ฒ์์ ์ง์ํ์ง ์๋๋ค. ex) ๊ท์ฌ์ด ํธ๋๋ผ๋ ์ ์ ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด์, ํธ๋๋ผ๊ณ ๊ฒ์ํ๋ฉด ์ฟผ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ์ ๋์ด๊ฐ ์ผ์นํ๋๋ก ์
๋ ฅํด์ผ ์ฐพ๊ณ ์ํ๋ ์ ์ ๋ฅผ ๊ฒ์ํ ์ ์๋ค ์ด์ ๊ฐ์ ์ํฉ์ด๋ผ๋ฉด, ๊ฒ์๊ธฐ๋ฅ์ ํฐ ์๋ฏธ๊ฐ ์๋๊ฒ ๊ฐ์ ๋ถ๋ถ ๋ฌธ์์ด๋ก ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ํด๊ฒฐํด๋ณด๊ณ ์ ํ๋ค. export const cleaningText = (text: string): string => { // ํน์๋ฌธ์ ๋ฐ ๊ณต๋ฐฑ ์ ๊ฑฐ, ๋ค์ํ ์ธ์ด ์ง์ const regEx = /[`~!@#$%^&*()_|+\-=?;:'",.\{\}\[\]\\\/ ]/gim; const cleanText = text.replace(regEx, "").toLowerCase(); return ..
CSR์ ๋ํ์ ์ธ ์ด๊ธฐ ๋ก๋ฉ์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ์์
๋ค์ ์ํํด๋ณด์๋ค. 1. React.lazy์ Suspense ์ ์ฉํ๊ธฐ SPA์ ๋ํ์ ์ธ ๋จ์ ์ผ๋ก, ์ต์ด ๋ก๋์ ํ์ํ์ง ์์ ์ ์๋ ๋ชจ๋ ํ์ผ์ ๋ค์ด๋ฐ๊ธฐ ๋๋ฌธ์, ์ด๊ธฐ ๋ก๋ฉ์๋๊ฐ ๊ธธ์ด์ง๋ค๋ ์ ์ด ์๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ๋ํ์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ์ค ํ๋๊ฐ lazy Loading์ด๋ค. ๋์ load ํด๋น ๋ชจ๋์ด ํ์ํ ๋๋ง ๋ก๋ โ ์ฝ๋ ์คํ๋ฆฌํ
(code splitting)๊ณผ ์ง์ฐ ๋ก๋ฉ(lazy loading)์ ๊ฐ๋ฅ โ ์ฌ์ฉ์๊ฐ ํน์ ํ์ด์ง๋ ๊ธฐ๋ฅ์ ์ ๊ทผํ ๋ ํ์ํ ๋ฆฌ์์ค๋ง ๋ค์ด๋ก๋๋ฉ๋ฅ์ํ ์๋น์ค์ ๋ผ์ฐํธ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋์ด ์๋ค.const PATHS = { main: "/main", logIn: "/", signUp: "/signup", f..
์ข์์๋ ๋ง์ด ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์, ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ๋ก์ง์ ๋ถ๋ฆฌํ๋๊ฒ์ด ๋ ํจ์จ์ ์ด๋ผ๊ณ ํ๋จํ์ฌ ์ด์ ๋ํ ์์
์ ์ํํ์๋ค. ๊ฒ์๊ธ๊ณผ ๋๊ธ, ๋๋๊ธ์ ์ข์์๊ฐ ๊ฐ๋ฅํ๋๋ก ๊ตฌํ๋์ด ์๊ณ , ์ข์์์ ๋ํ collection ๋ํ ๋ถ๋ฆฌํด๋๊ณ , post์ comment๋ likeCount ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ด์, ์ข์์๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฟผ๋ฆฌ๋ฅผ ํ์ง ์๋๋ก ํ์๋ค. ๐ DB collection ์ฐธ๊ณ https://s-organization-335.gitbook.io/meongnang Firebase DB ์ค๊ณ | ์ฑ๋ฅ ์ต์ ํ & ๊ธฐ์ ์ ์์ฌ๊ฒฐ์ ๐ค User Users FieldType ใด Following FieldType ใด Follower FieldType Follow ์ ๋ณด๋ฅผ User ํ
์ด๋ธ์์ ํ๋ฒ..
๋ก๊ทธ์ธ ์ํ ์ ์ง ๋ก๊ทธ์ธ ์ํ ์ ์ญ ๊ด๋ฆฌfirebase๋ ๋ก๊ทธ์ธ์ด๋ ํ์๊ฐ์
์ ํ๋ฉด, ์ด์ ๊ฐ์ด user์ ๋ณด๋ฅผ ๋ฆฌํดํด์ค๋ค.์ด ์ ์ ์ ๋ณด๋ฅผ ํตํด ๋ก๊ทธ์ธ ์ํ์, ํ๋กํ, ๋ณธ์ธ์ ๊ฒ์๊ธ/๋๊ธ ์ฌ๋ถ๊ฐ์ ์์
๋ค์ ํ ๊ฒ์ด๋ฏ๋ก ์ ์ญ(zustand)์ผ๋ก user์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค.์ฒ์์ ์๋ก๊ณ ์นจ์ด ๋ฐ์ํด๋ ์ ์ญ ์ํ ์ด๊ธฐํ๊ฐ ๋ฐ์ํ์ง ์๋๋ก, zustand์ persist ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ localStorage์ ๋ด์ ์ด ๋ก๊ทธ์ธ ์ํ(์ ์ ์ ๋ณด ์กด์ฌ ์ฌ๋ถ)๋ฅผ ์ ์ง๊ฐ ๋๋๋ก ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.ํ์ง๋ง, ์ฐพ์๋ณด๋ firebase ์ธ์ฆ ์์คํ
์ด ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด, ์ธ์ฆ ํ ํฐ์ ์ฌ์ฉํ๊ณ ์ด ์ธ์ฆํ ํฐ์ ์๊ฐ์ด ์ฝ 1์๊ฐ ์ ๋์ด๊ธฐ ๋๋ฌธ์, ์ด ํ ํฐ์ด ๋ง๋ฃ๋๊ฑฐ๋ ๊ฐฑ์ ์ ์คํจํ๋ฉด ๋ก์ปฌ์คํ ๋ฆฌ์ง์๋ ๋ก๊ทธ์ธ์ํ์ด์ง๋ง..
SSR์ CSR์ SEO CSR (React.js) CSR(ClientSide Rendering)์ ๊ฒฝ์ฐ ์ด๊ธฐ์ ๋น html ๋ฌธ์๋ฅผ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์, ๋ด์ด ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ธฐ ์ด๋ ต๊ธฐ๋๋ฌธ์ SEO์ ๋ถ๋ฆฌํ๋ค. SSR(Next.js)ํ์ง๋ง, SSR(ServerSide Rendering)์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ํ์ด์ง๋ฅผ ์๋ฒ์์ ๋์ ์ผ๋ก ์์ฑํด ๋ธ๋ผ์ฐ์ ์ ๋ณด๋ด๋ ๋ฐฉ์์ผ๋ก, ์ด๋ฏธ ์๋ฒ์ชฝ์์ ๋ง๋ค์ด์ง ์์ฑ๋ html์ ๊ฒ์์์ง๋ค์ด ํฌ๋กค๋ง์ด ๊ฐ๋ฅํ๊ธฐ๋๋ฌธ์ ๊ฒ์์ ์ ๋ฆฌํด์ง๋ค. SEO ์ง๋จโ
SSR์ ์ฅ์ ์ธ SEO ์ฑ๋ฅ ์ต์ ํ ์์
ํ๊ธฐ ์ , SEO checkup์ ํด๋ณด์๋ค.https://pagespeed.web.dev/analysis/https-balanco-vercel-app/hxv2uh2yl9?form_factor..
'ํ๋ก์ ํธ' ์นดํ
๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก
๋จ์ถํค
๋ด ๋ธ๋ก๊ทธ
๋ด ๋ธ๋ก๊ทธ - ๊ด๋ฆฌ์ ํ ์ ํ |
Q
Q
|
์ ๊ธ ์ฐ๊ธฐ |
W
W
|
๋ธ๋ก๊ทธ ๊ฒ์๊ธ
๊ธ ์์ (๊ถํ ์๋ ๊ฒฝ์ฐ) |
E
E
|
๋๊ธ ์์ญ์ผ๋ก ์ด๋ |
C
C
|
๋ชจ๋ ์์ญ
์ด ํ์ด์ง์ URL ๋ณต์ฌ |
S
S
|
๋งจ ์๋ก ์ด๋ |
T
T
|
ํฐ์คํ ๋ฆฌ ํ ์ด๋ |
H
H
|
๋จ์ถํค ์๋ด |
Shift + /
โง + /
|
* ๋จ์ถํค๋ ํ๊ธ/์๋ฌธ ๋์๋ฌธ์๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋๋ฉ์ธ์์๋ง ๋์ํฉ๋๋ค.