2010-11-23 3 views
1

CMS가 전적으로 내장되어 있습니다. 나는 4 주간 ColdFusion 경험을 가진 새로운 웹 개발자입니다. 내가하고 싶은 것은 동적 페이지에 버전 컨트롤을 추가하는 것입니다. Wordpress가하는 것과 같은 것. 당신이 Wordpress에있는 페이지를 수정할 때 그것은 몇몇 데이타베이스 entire를 만들고 당신이 그것을 저장할 때 각 페이지의 사본을 유지한다. 따라서 페이지를 작성하고 6 번 수정하면 하루에 7 가지 버전이 필요에 따라 롤백됩니다. Coldfusion에서 비슷한 작업을 수행하는 쉬운 방법이 있습니까?버전 제어를 사용하여 ColdFusion 응용 프로그램 빌드

참고 사항 나는 소스 제어 나 실제 CFM 파일의 버전 제어에 대해 말하는 것이 아니며, 모든 페이지는 백엔드에서 SQL을 사용하여 동적으로 수행됩니다.

+1

30 초 이내에 생각한 방법은 세 가지가 있습니다. 문제는 현재 데이터베이스 구조로 어떻게 처리해야하는지입니다. 어쩌면 CMS 작동 방식에 대한 자세한 내용을 게시 한 경우 더 나은 응답을 얻을 수 있습니다. –

+1

이것이 왜 coldfusion 태그가 붙어 있는지 보지 못했습니다. – Yisroel

+0

@Yisorel - 사용자의 위치를 ​​이해할 수 있지만이 질문에 대한 좋은 대답은 문제를 더 쉽게 해결할 수있는 ColdFusion 관련 항목을 강조한다는 것입니다. – orangepips

답변

4

하실 수 있습니다. 다른 데이터베이스 테이블에 페이지 내용을 숨겨 넣기 만하면됩니다. ColdFusion 또는 데이터베이스의 트리거를 통해이를 수행 할 수 있습니다.

2

이 작업을 수행하는 한 가지 방법은 모든 CMS 페이지를 저장하는 테이블에 "버전"이라는 열과 "라이브"라는 열을 추가하는 것입니다.

live라는 열은 옵션이지만 시작하는 동안 어떤면에서 더 쉽게 만들 수 있습니다.

"버전"열은 CMS에있는 문서의 개정 번호를 알려줍니다. 제거 과정을 통해 가장 최신 버전 (최신 버전)이 최신 최신 버전이 될 수 있다고 말할 수 있습니다. 그러나 이것을 잠시 무시하고 이전 페이지를 라이브로 설정해야 할 수도 있습니다. 즉 "라이브"설정을 지정할 수 있습니다.

페이지에서 "편집"을 클릭하면 클릭 한 버전을 가져 와서 새로운 상위 버전 번호로 복사합니다. 게시를 클릭 할 때까지 초안으로 유지됩니다.이 때 게시는 '라이브'로 표시됩니다.

도움이 되었 길 바랍니다. 이런 종류의 접근법은 대부분의 스키마 디자인에서 잘 작동하지만 꼭 보지 않고도 말할 수는 없습니다.

+0

동일한 테이블에 라이브 및 아카이브 데이터를 유지하면서 데이터베이스에서 실시간으로 페이지가 생성되는 경우 성능 병목 현상이 발생합니다. – orangepips

+0

@orangepips - 캐싱이 제대로되었는지 확인하는 것이 중요합니다. 아카이브 된 페이지가 많으면 나중에 아카이브 테이블로 이동할 수 있습니다. 확실히 주목할만한 가치가 있습니다. :) –

0

대부분의 변경 사항이 하나의 필드 (예 : 콘텐츠 페이지의 전체 텍스트) 인 경우 Jas '솔루션이 잘 작동합니다.

그러나 많은 필드가 있고 사람이 한 번에 한 두 가지만 변경하는 경향이있는 경우 각 버전의 테이블에 새로운 항목이 빠르게 빠져 나갈 수 있습니다. .

이 경우 내가하고 싶은 것은 ChangeHistory 테이블의 필드 단위로 변경 사항을 저장하는 것입니다. 테이블 이름, 행 ID, 필드 이름, 이전 값, 새 값 및 누가 언제 변경했는지 포함합니다.

이것은 모든 테이블의 모든 필드에 대한 완전한 변경 내역 역할을합니다. 또한 레코드, 사용자 또는 필드별로 변경 내용을 볼 수 있습니다.

+0

세부 변경보고가 필요할 때 열 수준에서 변경 내용을 추적하는 것이 좋습니다. 그러나 IMO, 주어진 시점에서 완전한 스냅 샷을 재구성하는 경우는 그다지 중요하지 않습니다. 나는 한 번 그런 시스템으로 작업했고 약간 힘들다는 것을 알았습니다. 특히 몇 개 이상의 열이 관련된 경우. – Leigh

0

데이터베이스에서 실시간 페이지를 생성 할 때 가장 좋은 방법은 "라이브"및 "버전 관리"테이블입니다. 한 테이블에서 모든 데이터를 라이브 및 버전으로 유지하는 것은 성능에 부정적인 영향을 미칩니다. 따라서 페이지 생성이 라이브 테이블의 단일 SELECT 쿼리에 의존하는 경우 < cfwddx> 태그를 통해 ColdFusion의 Web Distributed Data eXchange 형식 (wddx)을 사용하여 결과 집합을 쉽게 버전을 바꿀 수 있습니다. WDDX는 직렬화 된 데이터 형식으로 ColdFusion 데이터 (객체 처리 기능이 없어도 Python의 피클과 비슷합니다)에서 특히 잘 작동합니다.

v 전화 테이블 등이 될 수있다 :

WDDX 데이터 저장 열이
PageID 
Created 
Data 

.

버전 직렬화 (serializeJSON & deserializeJSON)에 내장 JSON 지원을 사용할 수도 있지만 cfwddx는보다 안정적인 경향이 있습니다.

관련 문제