검색
- Full table scan : 테이블 전체를 조회 (성능이 좋지 않다.)
- ElasticSearch : 특정 키워드(Token) 별로 Inverted Index 만들고 해당 글번호를 따로 저장 후 조회 (Tokenizing)
- 위의 2가지 방법 - Disk 기반 데이터베이스, 속도가 느리다. (서버가 재실행 돼도 데이터가 남아있다.)
- Redis Caching : Redis에 사용자들이 사용하는 중복된 검색어를 caching하고 검색결과를 미리 넣어둔다.
- Memory 기반 데이터베이스, 속도가 빠르다. (서버가 재실행되면 데이터가 사라진다.)
- debounce : 입력되고 특정 시간동안 query 요청을 지연시키는 것
- Throttle : 먼저 한번 query를 보내고 특정시간동안 query를 보내지 않는 것 ex) 무한 스크롤 구현할 때 스크롤 1번을 내리면 query가 무수히 요청된다. 이때 이를 방지하고자 사용한다.
- Lodash (Library) : debounce, throttle 구현을 도와주는 라이브러리
- Keyword 색 바꾸기
- replaceAll을 통해 keyword 양쪽으로 secret code를 붙여준다.
- secret code를 기준으로 split 해준다.
- split한 배열을 map을 통해 조건부로 랜더링 시킨다.