웹 애플리케이션을 개발하면서 실시간 검색 입력창이나 창 크기 조절(Resize), 스크롤 이벤트를 구현할 때 매 밀리초마다 이벤트가 수십, 수백 번 폭주하는 현상을 경험해봤을 것이다.다만 이벤트가 과도하게 실행되면서 브라우저가 버벅이거나 서버 API 호출 비용이 낭비되고 있음에도 정확한 원인이나 제어 방법을 모르는 경우가 많다.이번에는 자바스크립트의 대표적···
웹 페이지에서 스크롤에 맞춰 이미지를 늦게 불러오는 지연 로딩(Lazy Loading)이나, 페이지 하단에 도달했을 때 다음 데이터를 자동으로 불러오는 무한 스크롤을 구현해본 적이 있을 것이다.다만 기존의 window.addEventListener('scroll', ...) 방식이 스크롤할 때마다 수십, 수백 번씩 호출되어 브라우저의 렌더링 성능을 심각하게···
동적으로생성된DOM요소에이벤트를붙이려고할때,개발자들은보통새요소가생성될때마다이벤트리스너를다시등록해야한다고생각한다.다만대부분의개발자들은이과정이얼마나비효율적이고성능을낭비하는지깨닫지못한다.이번에는EventDelegation(이벤트위임)이정확히뭔지,왜필요한지,그리고어떻게구현하는지실무에서바로쓸수있는방식으로완벽하게정리해서소개하겠다. EventDelegation이뭐고왜필···
jQuery는 편리하지만, 잘못 사용하면 웹사이트 성능을 크게 떨어뜨릴 수 있다. 특히 대규모 프로젝트에서 jQuery를 남용하거나 최적화하지 않으면 페이지 로딩 속도, 메모리 사용량 등 여러 문제가 발생한다. 이번에는 jQuery를 사용할 때 자주 하는 실수들과 그 해결책을 정리해서 소개하겠다. 이 글을 읽고 당신의 jQuery 코드를 점검해보면, 분명히···
PHP 웹사이트를 운영하다 보면 갑자기 서버에서 "PHP Fatal error: Allowed memory size of X bytes exhausted" 라는 에러가 발생하는 경험을 하게 된다. 특히 대용량 파일을 처리하거나 많은 데이터를 조회할 때 더 자주 발생한다. 이 에러가 발생하면 해당 페이지는 완전히 작동 불능 상태가 되기 때문에 사용자 경험도 ···
웹사이트를 운영하다 보면 시간이 지나면서 데이터가 쌓이고, 어느 순간부터 갑자기 페이지 로딩이 느려지는 경험을 하게 된다. 특히 PHP에서 MySQL 쿼리를 실행할 때 어떤 쿼리가 느린지, 왜 느린지 파악하기가 쉽지 않다. 직접 쿼리를 날려보거나 전체 쿼리를 로깅하는 것도 방법이지만 효율적이지 못하다. 이럴 땐 MySQL의 느린 쿼리 로그(Slow Quer···