글 하나가 홈 화면보다 쿼리를 더 쓴다
워드프레스 글 한 편을 열면 데이터베이스에 몇 번이나 물어볼까요. 본문 한 번, 댓글 한 번 정도를 떠올리기 쉽지만 실제로는 그렇지 않았습니다. 이 블로그의 글 한 편을 여는 동안 나간 SQL 쿼리는 63개였습니다. 글 12편의 목록이 뜨는 홈 화면은 38개였습니다. 글 하나가 열두 편짜리 목록보다 데이터베이스를 더 많이 두드립니다. 쿼리마다 붙어 있는 호출 경로를 따라가서 63개가…
워드프레스 글 한 편을 열면 데이터베이스에 몇 번이나 물어볼까요. 본문 한 번, 댓글 한 번 정도를 떠올리기 쉽지만 실제로는 그렇지 않았습니다. 이 블로그의 글 한 편을 여는 동안 나간 SQL 쿼리는 63개였습니다. 글 12편의 목록이 뜨는 홈 화면은 38개였습니다. 글 하나가 열두 편짜리 목록보다 데이터베이스를 더 많이 두드립니다. 쿼리마다 붙어 있는 호출 경로를 따라가서 63개가…
워드프레스가 무겁다는 말을 들으면 보통 플러그인을 의심합니다. 그러면 플러그인이 하나도 없는 사이트는 얼마나 가벼울까요. 이 블로그가 그 조건입니다. 활성 플러그인 0개, 테마는 Kadence 하나입니다. 글 한 편을 열 때 브라우저가 받는 파일을 전부 세어 봤습니다. HTML 하나에 CSS 8개, JS 5개, 인라인 스타일 6개였고, 압축 전 기준으로 520KB였습니다. 그리고 그 절반 가까이는 워드프레스도 테마도 아닌…
워드프레스는 설치만 하면 REST API가 켜집니다. 플러그인을 붙이지 않아도, 설정을 건드리지 않아도 그렇습니다. 그런데 이 API가 로그인하지 않은 사람에게 무엇까지 보여주는지는 대부분 확인하지 않고 넘어갑니다. 그래서 운영 중인 사이트에서 직접 세어 봤습니다. 라우트가 몇 개인지, 어떤 주소가 인증 없이 열리는지, 열리는 응답에 무엇이 들어 있는지입니다. 먼저 라우트 개수부터 REST API는 주소 하나가 아니라 여러 개의…
워드프레스 속도 이야기가 나오면 자주 등장하는 것이 wp_options 테이블의 autoload 옵션입니다. 쓰지 않는 플러그인이 남긴 찌꺼기가 쌓여 모든 요청을 느리게 만든다는 설명입니다. 그런데 이 조언은 대부분 “정리하십시오”에서 끝나고, 정작 내 사이트의 현재 값이 얼마인지 재는 방법과 정상 범위가 어느 정도인지는 알려주지 않습니다. 그래서 직접 재봤습니다. 결과는 흔히 지목되는 대상과 달랐습니다. autoload가 무엇을 뜻하는가 wp_options 테이블에는…
워드프레스 사이트 루트에 ads.txt나 robots.txt를 올렸는데 브라우저에서는 404가 뜨는 경우가 있습니다. FTP 화면에는 파일이 분명히 보이고 파일명도 맞는데 주소창으로는 열리지 않습니다. 이때 대부분 퍼머링크 설정을 다시 저장하거나 플러그인을 껐다 켜는 쪽으로 시간을 씁니다. 하지만 이 문제는 워드프레스 내부 설정보다 파일을 올린 위치와 웹서버가 실제로 바라보는 문서 루트가 어긋난 상황인 경우가 훨씬 많습니다. 이 글에서는 404의…
워드프레스에서 요금제나 제품 사양, FAQ를 한 페이지에 모두 펼쳐 놓으면 내용이 길어지고 핵심을 찾기 어려워집니다. 워드프레스 7.1의 탭(Tabs) 블록은 이런 정보를 주제별로 나눠 한 영역 안에 정리하는 기능입니다. 엘리멘터 같은 페이지 빌더를 추가하지 않아도 구텐베르크 블록 편집기에서 사용할 수 있다는 점이 가장 큰 변화입니다. 워드프레스 탭 블록은 어떤 기능인가 탭 블록은 상단에 여러 개의 탭…
사이트를 새 서버나 새 도메인으로 이전한 뒤 홈페이지는 정상적으로 열리는데 /wp-admin/ 로그인 과정에서 이전 도메인으로 이동하는 경우가 있습니다. 이 현상은 단순히 파일 복사가 덜 된 문제가 아닙니다. 워드프레스 데이터베이스에 저장된 URL, wp-config.php의 강제 설정, 웹 서버와 CDN의 리디렉션, 브라우저 쿠키가 각각 영향을 줄 수 있습니다. 문제를 빠르게 해결하려면 여러 설정을 한꺼번에 바꾸기보다 브라우저에서 시작해 워드프레스,…
워드프레스 예약 글이 발행 시각을 지났는데도 공개되지 않고 ‘예약을 놓침(Missed Schedule)’으로 표시되는 경우가 있습니다. 예약 시간을 다시 지정하면 한 번은 해결되는 것처럼 보여도 같은 현상이 반복된다면 글 편집기보다 예약 작업을 실행하는 WP-Cron을 살펴봐야 합니다. 다만 모든 문제가 WP-Cron 때문인 것은 아닙니다. 관리자 화면에서는 이미 공개됐지만 홈페이지 캐시가 갱신되지 않아 발행되지 않은 것처럼 보일 수도 있고,…
악성 파일을 하나 찾아 삭제했는데 며칠 뒤 같은 파일이나 비슷한 코드가 다시 생긴다면, 단순히 삭제가 제대로 되지 않았다고만 보기는 어렵습니다. 공격자가 다시 들어올 수 있는 취약점이 남아 있거나, 서버 안에 설치된 백도어가 파일을 재생성하고 있을 수 있습니다. 워드프레스 보안 사고에서는 악성코드 제거와 재침입 원인 차단을 분리해서 봐야 합니다. 눈에 보이는 PHP 파일은 원인이 아니라 이미…
워드프레스 사이트가 하루 종일 느린 것이 아니라 매일 비슷한 시간에만 지연된다면, 단순한 서버 사양 부족으로 보기 어렵습니다. 특정 시점에 방문자 요청이 몰렸거나 예약 작업이 실행됐을 수 있고, PHP Worker가 외부 API나 데이터베이스 응답을 기다리느라 묶였을 수도 있습니다. 먼저 문제가 발생한 정확한 시간과 함께 CPU, 메모리, PHP 처리량, 예약 작업 로그를 비교해야 불필요한 업그레이드를 피할 수…
티스토리에서 워드프레스로 블로그를 옮길 때 가장 번거로운 부분은 게시글 본문과 이미지를 한꺼번에 이전하는 작업입니다. 티스토리 백업 파일을 직접 분석해 가져오거나 공개 글을 크롤링하는 방법도 있지만, 설정과 사후 정리가 필요합니다. Mytory가 개발한 티스토리 마이그레이션 플러그인은 이 과정을 워드프레스 관리자 화면에서 처리할 수 있도록 단순화한 도구입니다. 다만 ‘백업 파일을 업로드하면 바로 끝난다’고 생각하면 곤란합니다. 파일 크기 제한,…
워드프레스에서 몇 줄의 PHP 코드만 추가해도 관리자 화면, 게시물 표시 방식, 사용자 권한, 테마 동작 등을 바꿀 수 있습니다. 그래서 검색 결과에는 “functions.php에 코드를 추가하세요”라는 안내가 자주 등장합니다. 다만 이 파일은 단순한 설정 파일이 아니라 워드프레스가 테마를 불러올 때 함께 실행하는 PHP 파일입니다. 문법 오류 하나로 사이트와 관리자 화면이 동시에 열리지 않을 수 있고, 부모…