728x90
안녕하세요 jju_developer 입니다.
개발을 하다보면 웹 페이지 로딩 시간을 줄이는 방안으로
코딩을 하곤 하는데...
웹 페이지의 로딩 시간을 줄이기 위해서 종합적인 방안을 생각해 보겠습니다.
종합적으로 최적화 방안이 뭐가 있을까요?
- 데이터베이스 인덱스 사용: 가장 먼저 데이터베이스에서 검색 성능을 향상시키기 위해 적절한 인덱스를 생성합니다.
- 효율적인 쿼리 작성: 필요하지 않은 데이터를 가져오지 않도록 쿼리를 최적화합니다.
>> 개인적으로 깊게 파면 팔수록 어렵다고 생각하는 부분입니당... - 캐싱 전략 적용: 자주 조회되는 데이터는 캐싱하여 데이터베이스 접근을 최소화합니다.
>> 예를 들면 서적을 검색하는 페이지 일 경우에 1-10 랭킹은 자주 검색할 것이기 때문에 캐싱하여 저장합니다. - 자바 측면의 최적화: 검색 알고리즘을 최적화하고, 적절한 자료구조를 사용하여 데이터 접근 성능을 향상시킵니다.
"jju 서점"이라는 웹 페이지를 만든다고 가정해보겠습니다.
웹에서 인기순위 1-10위까지의 서적은 캐싱 전략을 사용하고,
나머지 서적 검색은 인덱스와 검색 알고리즘 최적화를 통해 처리하는 예시라고 생각해주세요~
1. 인기 서적 캐싱 전략
인기 서적 1-10위는 자주 검색되기 때문에 캐시에 저장하여 빠르게 접근할 수 있도록 합니다.
캐싱을 위한 데이터 구조:
import java.util.List;
import java.util.Map;
import java.util.HashMap;
public class Cache {
private Map<String, List<Book>> cache = new HashMap<>();
private static final String POPULAR_BOOKS_KEY = "popular_books";
// 인기 서적을 캐시에 저장
public void putPopularBooks(List<Book> books) {
cache.put(POPULAR_BOOKS_KEY, books);
}
// 인기 서적을 캐시에서 가져옴
public List<Book> getPopularBooks() {
return cache.get(POPULAR_BOOKS_KEY);
}
}
데이터베이스에서 인기 서적을 가져와 캐시에 저장:
import java.util.List;
public class BookService {
private Cache cache = new Cache();
private DatabaseService databaseService = new DatabaseService();
public void cachePopularBooks() {
List<Book> popularBooks = databaseService.getPopularBooks(1, 10);
cache.putPopularBooks(popularBooks);
}
public List<Book> getPopularBooks() {
List<Book> popularBooks = cache.getPopularBooks();
if (popularBooks == null) {
popularBooks = databaseService.getPopularBooks(1, 10);
cache.putPopularBooks(popularBooks);
}
return popularBooks;
}
}
2. 나머지 서적 검색 최적화
나머지 서적 검색은 인덱스와 검색 알고리즘 최적화를 통해 처리합니다.
인덱스 설정 (데이터베이스):
-- 인덱스 설정
CREATE INDEX idx_title ON books(title);
CREATE INDEX idx_author ON books(author);
CREATE INDEX idx_genre ON books(genre);
자바 코드에서 검색 최적화:
import java.util.List;
public class BookService {
private DatabaseService databaseService = new DatabaseService();
// 키워드로 책 검색
public List<Book> searchBooks(String keyword) {
return databaseService.searchBooks(keyword);
}
}
아직은 크게 와닿지 않은거 같은데...
그래도 계속 공부하다보면 언젠가 깨닳는 날이 있겠죠?
이해 안가는 부분있으시면 언제나 댓글 주세요~
조언도 환영입니다~~~~

728x90
'주니어 기초 코딩공부 > 알고리즘에 대하여' 카테고리의 다른 글
[자주 쓰는 알고리즘 문법 정리] Stack, Queue, Collection Binary Search (73) | 2024.08.07 |
---|---|
[1년차 개발자 입장] 알고리즘을 알아야 하는 이유? (105) | 2024.08.06 |