1

現在、私は自分の小さなMVCを作成しようとしています(練習とMVCパターンの詳細を理解するためだけに)。ページの一部(ドロップダウン、リストなど)をキャッシュしたいのですが、それを整理するための最良の方法がわかりません。

getPostDetailsS​​hortly($ post_id)メソッドを持つPostsControllerがあると想像してみましょう。このメソッドは次のようになります...

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;

}

次に、このコントローラーメソッドをビューから使用できるようにする必要があります。たとえば、関連する投稿リストを作成するために、他のページ内で使用するためです。

それを行うためのベストプラクティスは何ですか?たぶん私は間違っていて、ページのキャッシュ部分を整理するためのより良い方法がいくつかありますか?

PS:私の英語は申し訳ありませんが、はっきりしているといいのですが。

ありがとうございました!

4

1 に答える 1

1

これを読んでいる可能性があり、知らない人のためのMVCの背後にある考え方は、サイトのモデル、ビュー、およびコントローラーのアーキテクチャーを分離することです。私はCakePHPMVCフレームワークに最も精通しています。したがって、この回答は、CakePHPに関連するMVCに関する私の知識に基づいています。

提供する情報はビューに提供する必要があるため、HTMLヘルパーとして作成することをお勧めします。ヘルパーは、ビューに再利用可能なコードを提供するように設計されています。コントローラは、コードの背後にあるロジックの実装です(ビューのフォームからのデータをどう処理するか、どのビューを呼び出すか、モデルにデータを要求するなど)。

これらのアイテムのキャッシュについて話している質問に目を通します。大量のトラフィックが予想される場合は良いことだと思いますが、それ以外の場合は実際には必要ありません。そうは言っても、問題はキャッシングよりもアーキテクチャに関するもののようです。現在のアーキテクチャは健全に見えますが、すべてのコントローラーからアクセスできる「コンポーネント」に機能を移動します。これにより、毎回特定のコントローラーを呼び出すことなく、必要なコントローラーから呼び出すことができます。

于 2010-03-08T23:54:20.133 に答える