개발
PHP 개발 일지

PHP 사이트맵 제작 (1)

112 views as of October 29, 2024.

사이트맵이란?

사이트맵은 그 사이트의 여러가지 페이지에 접근가능한 링크의 모음, 즉 메뉴라 볼 수 있다.

근데 용도는 사용자가 보기보다는 웹 서치 엔진이나 봇이 이 사이트에 대해 이해하는데 도움을 주기 최적화된 형태라고 할 수 있다.


실제로 사이트맵은 위의 형태처럼 XML 문서 구조의 형태를 띄고 있다.
사람이 보고 이해하기엔 그 용도가 아님을 알 수 있다.

그래도 웹사이트의 전파, 특히 웹 서치엔진의 결과에 좋은 평가를 얻어 유입을 만들고 싶을때 가장 먼저하게 되는 작업이 사이트맵의 제작이다.

실제로 사이트맵을 제작하는방법은 여러가지가 있다.
내가 임의대로 XML 구조를 이용해서 사이트맵을 제작 후 배포할 수 있으며, 내 사이트 주소를 입력하면 자동으로 링크를 타고들어가 사이트맵을 제작해주는 사이트도 있다. (관련된 사이트에 대해서 리뷰한 글은 여기서 볼 수 있다.


문제 제기

문제는 사이트맵은 정적인 자료라는 것이다.
매번 만들때마다 현재 사이트의 링크를 모아서 파일을 생성한 후 로봇이 접근할 수 있게 사이트 루트 위치에 sitemap.xml 이라는 파일명으로 게시 해놓아야 한다.


이게 별 대수냐? 라고 생각할 수 있겠지만, 포트폴리오나 랜딩페이지같은 정적인 사이트 입장에서는 크게 문제는 안되지만 게시판, 포럼, 커뮤니티 사이트의 경우에는 매번 새로 업데이트 되는 글이 지속적으로 생성되기에 이런 글들을 동적으로 반영하는 사이트맵을 구축하기란 여간 힘든일이 아닐 수 없다.

이 상황에서 내가 생각한거는 '아, 자동으로 갱신되는 사이트맵이 있었으면 좋겠다.; 였다.
생각은 쉽지 결국 사이트맵을 구조화 하는 코드를 만들고 이를 반복적으로 실행할 수 있는 프로세스를 만들어야 한다는 문제에 봉착할 수 있다.


가정

일단 사이트맵을 제작하는 것은 결국 XML 형식에 맞는 데이터를 구조화 한 후에 파일을 생성하면 되므로 어찌저찌 하면된다.
문제는 이런 정적인 파일을 어떻게 '동적'인 형태의 파일처럼 보이게 자동으로 만드냐는 것이다.

이부분에서 몇가지 아이디어가 나올 수 있다.

1. 게시글등의 데이터가 써지는 순간 사이트맵을 생성한다.
2. 주기적으로 사이트맵을 생성한다.

1번의 경우에는 거의 실시간으로 사이트맵이 생성될 수 있다. 그야 생성 트리거가 새로운 데이터가 기입되는 순간이기 때문에 데이터와 사이트맵의 갱신차이가 제로에 가깝기 때문이다.

근데 이 방식의 문제는 그게있다. 데이터가 자주 생성되면 매번 사이트맵을 다시 생성해야하고 파일쓰기 작업이 이루어지는 사이트맵 생성 구조상 서버에 과도한 연산을 실행시킬 수 있다는 것이다. 쉽게말해서 동시접속 및 쓰기가 많은 사이트는 거의 불가능한 방법이다.

그럼 차선책은 2번의 경우라고 볼 수있다.

일정주기, 예를들면 하루에 한 번, 한 주에 한 번 사이트맵을 생성하면 되는것이다.
이 방식은 과도한 서버 쓰기를 발생시키지않으며 나름 주기적으로 사이트맵을 교체할 수 있는 차선책이라고 본다.


방안 제시

그럼 여기까지 왔다면 이제 '사이트맵 자동 생성기'의 윤곽은 아래처럼 구조화 할 수 있다.


회색 영역은 라라벨 구조안에서 서비스 클래스와 커맨드 클래스로 구현해볼 예정이고, 주황색 영역은 ubuntu의 crontab 기능을 이용해서 배치해볼 예정이다.

#개발 #PHP #사이트맵 #Sitemap #Laravel
0 개의 댓글
×