SEO(Search Engine Optimization)
검색 엔진 최적화. 네이버나 구글같은 검색 엔진에 뭔가를 검색했을 때, 내가 만든 사이트가 검색 결과에 더 잘 보이게 하기 위한 과정이다.
1. 크롤링
: 웹 크롤러를 이용하여 웹 페이지 정보를 가져온다. 웹 크롤러는 사이트를 방문한 다음 모든 링크를 타고 다니며 새로운 페이지들의 정보를 수집한다. 텍스트만 읽기 때문에 이미지, 동영상 정보는 읽을 수 없다. (alt text요소 추가 필요)
2. 인덱싱
: 웹 크롤러가 수집한 정보를 구글 검색 색인에 저장한다. 검색엔진에 의해 색인이 완료되면 검색 결과에 노출될 수 있다.
3. 랭킹
: 검색엔진은 사용자가 검색하는 키워드를 색인 내에서 가장 일치하는 페이지를 찾아 검색 결과에 노출 시킨다. 이때 각 검색 엔진의 알고리즘에 따라 페이지들의 순위를 매긴다. 일반적으로 HTML title, meta description 태그를 사용해야 검색 주제와 콘텐츠에 적합한 관련 페이지로 인식하여 결과에 노출될 수 있으며, 또한 타 페이지 링크횟수, 클릭 수, 트래픽 등이 랭킹에 영향을 주는 요소가 된다.
-
, 콜론:
, 막대|
을 사용한다.다음과 같은 방법을 사용하여 SEO를 적용할 수 있다.
React는 HTML 파일이 딱 1개인 SPA이고, 렌더링이 되기 전까지(자바스크립트를 실행하기 전까지)는 빈 껍데기 html 내용만 나오기 때문에 기본적으로는 검색 엔진에 올라가기가 어렵다.
그래서 pre-rendering을 사용하여야 한다.
빌드할때 미리 특정 페이지를 렌더링해서 html을 만들어 두는 것을 말한다. 빌드할 때 html 파일을 만들어두기 때문에 검색 엔진이 크롤링하러 사이트에 접근했을 때, 내용물을 보여줄 수가 있게 된다.
다만, 빌드 시에는 정적 파일만 가져오기 때문에 서버측에서 가져오는 데이터는 포함되어 있지 않는다.
pre-rendering을 사용하기 위해서는 react-snap
라이브러리를 사용할 수 있다.
// 1. 라이브러리 설치
yarn add --dev react-snap
// 2. package.json에 "postbuild": "react-snap" 스크립트를 추가
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"postbuild": "react-snap"
},
// 3. pre-rendering할 페이지를 package.json에 추가
"reactSnap": {
"include": [
"/index","/"
]
}
// 4. 이후 yarn run build를 하면 자동적으로 reat-snap 라이브러리가 실행
// 5. serve로 서버 실행하기
yarn add -g serve
// 6. /build/server.json을 생성해 아래와 같이 작성한다
{
"rewrites": [
{ "source": "/", "destination": "/200.html" },
{ "source": "/index", "destination": "/index.html" }
]
}
// 7. 아래 명령어로 서버를 실행한다.
serve -c server.json build