2010-02-11 2 views

답변

1

Rose::DB::Object::Cached 평범한 (비공유) 메모리의 캐시 개체입니다. mod_perl에서 이것은 각 아파치 프로세스가 자신의 캐시를 가지고 있음을 의미한다. 그러나 서버 시작시 오브젝트를 캐시 할 수 있습니다. 캐시 된 모든 객체는 각 아파치 하위 프로세스와 공유됩니다. 이는 서버 수명 동안 변경 될 것으로 예상하지 않는 읽기 전용 객체에 가장 유용합니다.

더 유연한 캐싱 옵션을 보려면 Rose::DBx::Object::Cached::CHI을 확인하십시오.

두 번째 질문의 경우 Rose::DB::Object::Cachedload()save()의 캐시에만 읽고 씁니다. 대부분의 관계 메서드는 Manager 쿼리를 사용하여 개체를 가져 오므로 Rose::DB::Object::Cached 캐시에서 읽지 않습니다.

+0

감사합니다. John, 관리자 경로는 무엇이 좋습니까? – Timmy

+0

읽기 전용 객체를 제외하고는 캐시하지 않는 것이 좋습니다. 필자의 경험에 따르면, 상위 레벨 (예 : 페이지 또는 전체 페이지의 구성 요소) 또는 하위 레벨 (예 : 데이터베이스 자체 앞에있는 캐시)에서의 캐싱은 데이터베이스 오브젝트 레벨에서의 캐싱보다 더 많은 성과를 거두는 경향이 있습니다 . –

+0

그들은 읽기 전용 시간의 99 %입니다. 아마도 아주 사소한 것들은 변할 것이지만, 그들은 독서에 의해 지배 될 것이고, 최신 일 필요는 없습니다. 거의 "id, color, description"테이블을 갖는 것 - id, color는 항상 같을 것이고 설명은 잠시 후에 바뀔 수도 있지만 반드시 필요하지는 않습니다. 나는 Rose :: DBx :: Object :: Cached :: CHI를 사용하기 위해 전환했으며, 관리자의 불확실성을 제외하면 이미 많은 도움이되었습니다. – Timmy