2008-10-29 7 views
0

저는 CMS를 만들었으며 구조의 주어진 페이지에 대한 전체 URL을 저장할 위치에 대해 아직 해결하지 않았습니다.CMS에 전체 URL을 저장하는 위치는 어디입니까?

모든 페이지에는 슬러그 (페이지의 URL 친숙한 이름)가 있고 모든 페이지에는 상위 및 하위 페이지에 대해 부모와 자식이 null 가능합니다.

어디서 특정 페이지에 대한 전체 URL (/ 첫 번째 페이지/하위 페이지)을 저장합니까? 이 작업은 페이지의 다른 속성이나 일부 캐시와 함께 데이터베이스에 있어야합니까?

업데이트

그것은 내가 그래서이 페이지 것을 얻기 위해 전체 URL을 통과 할 필요가없는 경우 해당 페이지의 전체 URL을 저장하는 대신에 대해 부탁 해요 데이터베이스 설계 아니다 사용자 요청 (/ 첫 페이지/하위 페이지) 나는 현재 요청 된 URL에 속해있는 페이지를 찾을 필요가 2

업데이트. 요청한 URL이/first-page/sub-page 인 경우 URL을 분할하고 데이터베이스를 통해 반복하고 싶지 않습니다 (분명히).

나는 단일 쿼리 (WHERE url = '/ first-page/sub-page')를 수행 할 수 있도록 테이블의 전체 URL을 갖고 싶지만 이것이 이상적이지는 않다. 부모 페이지 용 슬러그? 그런 다음 모든 하위 항목의 url-field도 업데이트해야합니다.

어떻게 다른 사람들이이 문제를 해결합니까? 그들은 그것을 데이터베이스에두고 있습니까? 첫 페이지/하위 페이지를 페이지의 ID에 매핑하는 캐시에서? 또는 요청 된 URL을 분할하고 데이터베이스를 반복하고 있습니까?

감사

캐시에

앤더스

+0

나는 아직도 당신의 질문을 이해하지 못한다고 생각합니다. 문제의 예를 들어 더 명확하게 할 수 있습니까? –

답변

0

스토어를 웹 서버가 지속적으로 URL을 찾는 될 필요가 있기 때문이다. 페이지의 URL이 매우 빠르게 변경되는 것을 예상하지 않는 한 캐싱은 대개 데이터베이스 기반 웹 사이트의 병목 현상 인 데이터베이스로드를 크게 줄입니다.

기본적으로 페이지를 렌더링하는 데 필요한 URL을 매핑하는 사전이 필요합니다. 많은 웹 서버는 자동으로 운영 체제의 파일 시스템을 사전으로 사용하며 종종 파일 시스템에서 파일이 변경되는 것을 인식 할 수있는 내장 캐시를 가지고 있습니다. 이것은 아마도 CMS에서 작성할 수있는 것보다 훨씬 효율적입니다. 따라서 CMS가 파일 시스템에서 직접 구조를 구현하고 하드 또는 소프트 링크를 사용하여 추가 매핑을 처리하도록하는 것이 더 좋습니다.

+0

페이지의 id를 캐시 또는 전체 페이지 객체에 저장해야합니까? – loraderon

+0

페이지가 HTML 형식입니까? 그들은 해석 된 스크립트입니까? 어떤 웹 서버 소프트웨어를 사용하고 있습니까? 컴퓨터에 모든 것을 캐시하기에 충분한 RAM이 있습니까? –

+0

마지막 HTML을 생성하기 위해 데이터베이스 쿼리를 수행해야합니까? –

0

방금 ​​MvcCms에 대해이 작업을 수행했습니다. 콘텐츠 카테고리/하위 카테고리 및 콘텐츠 페이지에 대한 아이디어를 얻었습니다. 콘텐츠 범주/하위 범주가 만들어지면 부모를 통해 반복적으로 이동하여 전체 경로를 작성한 다음 범주 테이블에 저장합니다. 그런 다음 페이지가 요청되면 올바른 컨텐트 페이지를 찾고 현재 구축중인 Nav가 현재 또는 활성 경로 인 경우 Nav 구조를 거칠 때 찾아 낼 수 있습니다.

이 접근법은 카테고리를 편집 할 때 발생하는 일에 대해 몇 가지 규칙을 요구합니다. 현재 전체 경로가 하위 카테고리로 설정되면 일반 도구로 나중에 변경할 수 없다는 것이 바로 접근 방식입니다.

소스는 mvccms.codeplex입니다.com