캐쉬를 사용하여 화면 로딩을 빠르게!!
2024. 5. 12. 21:31ㆍ카테고리 없음
개요
민트앱에서는 고객의 통계 데이타를 ElasticSearch에 저장하고 있습니다.
물론 ElasticSearch는 빠르지만 캐쉬보다는 빠르진 않습니다.
민트앱의 대쉬보드 페이지는 많은 데이타를 한꺼번에 쿼리를 해와서 보여주고 있습니다.
mysql,elasticsearch,dynamodb 등에서 데이타를 가져와서 처리하고 있습니다.
개발
캐쉬 사용 여부 체크
먼저 캐쉬가 가능한 데이타와 실시간데이타가 필요한 내용을 분리합니다.
실시간성으로 확인이 되어야 하는 데이타
-접속 디바이스
-신규유저
캐쉬가 되어도 무방한 데이타
-DAU,MAU
-앱 접속자 통계
-버젼별 통계
위의 규칙에 따른 라라벨에서 데이타를 가져오는것을 만들어봅니다.
//이번달 통계 데이타 (ElasticSearch)
//캐쉬 키를 프로젝트 아이디 + 원하는 키값
$thisMonth = Cache::remember($projectId . '_au_thisMonth', intval(env("STAT_CACHE_SECOND")), function () use ($projectId) {
return ElasticDeviceActiveService::getMonthlyStat($projectId,
Carbon::now()->year,
Carbon::now()->month);
});
//최신 사용자 등록
//dynamodb에서 최신 값을 가져옴.(캐쉬 미사용)
$pushes = UserPushModel::where('project_key', $project->id)
->where("timestamp", "<", Carbon::now()->getPreciseTimestamp(3))
->decorate(function (RawDynamoDbQuery $raw) {
$raw->query['ScanIndexForward'] = false;
})
->withIndex('project_key-timestamp-index')
->limit(20)
->get();
결론
프로젝트 대쉬보드에 최초 1회는 캐쉬에 데이타를 가져와야되서 느리지만 그 이후에는 빠르게 동작하는것을 확인할수 있습니다.
데이타 바인딩을 ajax로 변경한다면 더욱 빠르게 화면이 로딩이 될듯하므로 추가 작업이 필요할듯 합니다.
라라벨의 캐쉬는 provider가 다양하므로 어떤걸 써도 속도가 빨라지니 다들 프로젝트에 추가하시는걸 추천 드립니다.
민트소프트는 모바일 앱 개발 전문회사입니다. 하이브리드앱,크로스플랫폼,네이티브영역 전반에 걸친 모바일 앱을 개발하고 있습니다.
하이브리드는 민트앱이라는 솔루션을 보유하고 있어서 Time To Market에 매우 유리합니다.
언제는 찾아주시면 신속하고 빠른 상담을 진행하도록 하겠습니다.