문제

지금은 나만의 작은 MVC를 만들려고 노력하고 있습니다 (연습과 MVC 패턴 세부 사항을 이해하기 위해). 페이지의 일부 (드롭 다운, 목록 등)를 캐시하고 싶으며이를 구성하는 가장 좋은 방법이 무엇인지 모르겠습니다.

메소드 GetPostDetailSshortly ($ post_id)가있는 PostController가 있다고 상상해 봅시다. 이 방법은 다음과 같이 보일 수 있습니다 ...

public function getPostDetailsShortly($post_id) {

  if (!$post_id) return false;
  $content = $this->memcache->get("post" . $post_id); //Trying to get post details HTML from memcache

  if (!$content) { //Not fount in memcache

    $model = new PostsModel();
    $data = $model->getPostDetailsShortly($post_id);

    $this->view->assign('data', $data);

    ob_start();
    $this->view->render();
    $content = ob_get_contents(); //Getting view output into variable
    ob_end_clean();

    $this->memcache->set('post' . $post_id, $content, 1000); //Writing variable to memcache

  }

  return $content;

}

이제이 컨트롤러 방법을보기에서 사용할 수 있도록해야합니다. 예를 들어 관련 게시물 목록을 작성하는 데 다른 페이지 내부에서 사용하기 때문입니다.

그것을하는 가장 모범 사례는 무엇입니까? 어쩌면 내가 틀렸고 페이지의 캐싱 부분을 구성하는 더 나은 방법이 있습니까?

추신 : 영어로 죄송하지만 분명하기를 바랍니다.

고맙습니다!

도움이 되었습니까?

해결책

모르는 사람들을위한 MVC의 아이디어는 사이트의 모델,보기 및 컨트롤러 아키텍처를 분리하는 것입니다. CakePHP MVC 프레임 워크에 가장 익숙합니다. 따라서이 답변은 CakePHP와 관련된 MVC에 대한 지식을 기반으로합니다.

당신이 제공하는 정보를보기에 제공해야하기 때문에, 나는 그것을 HTML 도우미로 구축하는 것이 좋습니다. 도우미는보기에 재사용 가능한 코드를 제공하도록 설계되었습니다. 컨트롤러는 코드 뒤에있는 논리를 구현하는 것입니다 (보기의 양식에서 나오는 데이터, 호출 뷰, 데이터에 대한 모델 요청 등).

이 항목을 캐싱하는 것에 대해 말하는 질문을 살펴보십시오. 많은 양의 트래픽을 얻을 것으로 예상되지만 실제로는 필요하지 않다면 좋은 일이라고 생각합니다. 그럼에도 불구하고 문제는 캐싱보다 아키텍처에 관한 것 같습니다. 현재 아키텍처는 건전한 것처럼 보이지만 기능을 모든 컨트롤러에서 액세스 할 수있는 "구성 요소"로 이동합니다. 이를 통해 매번 특정 컨트롤러를 호출하지 않고도 필요한 컨트롤러에서 호출 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top