2012-02-29 18 views

答えて

0

出力キャッシュは大きな問題です。それは正しいことですか、あなたはデザインを少し考えなければなりません。

ここには2通りあります。コードサンプルは説明のためのものであり、実際の解決策ではありません。

  1. ブロックキャッシュとダイナミックコンポジション。おそらく最善の方法。あなたのページをいくつかのブロックに分割します。各ブロックは別々の関数/クラスで生成する必要があります。 Zend_Cache_Frontend_ *オブジェクトを使用して、それらのブロックをキャッシュすることができます。アプリケーションが何を表示するかをコントローラで知ったら、キャッシュされたブロックと動的パーツを使用して出力を構成できます。サブストリング置換と

    class CachedController extends Zend_Action_Controller 
    { 

    public function indexAction() 
    { 
     $this->_view->leftBlock = $this->leftBlock(); 
     $this->_view->rightBlock = $this->rightBlock(); 
    } 

    protected function leftBlock() 
    { 
     // prepare left block, can use Zend_View if you like 
     // use Zend_Cache to cache the block 
    } 


    protected function rightBlock() 
    { 
     // prepare left block, can use Zend_View if you like 
     // use Zend_Cache to cache the block 
    } 

    } 
/* VIEW SCRIPT */ 
<html> 
    <body> 
    <div class="left"> 
     Left cached block here 
     <?php echo $this->leftBlock; ?> 
    </div> 
    <div class="main"> 
     Do Your dynamic part here 
    </div> 
    <div class="right"> 
     Right cached block here 
     <?php echo $this->rightBlock; ?> 
    </div> 
    </body> 
</html> 
  1. 全体のページキャッシュ。ページをブロックに分割したくない場合は、ページ全体をキャッシュし(Zend_Cache_Frontend_ *を使用することもできます)、PHPのstr関数を使用して動的部分を置換または挿入します。フレームワークによって自動的に送信されるのではなく、Viewの出力をキャプチャする必要があります(これを変更する方法については、ドキュメントを参照してください)。
0

いつでもajaxで動的データを読み込むことができます。 例: ユーザーがログインして投票などを行う場合。

+0

これは、ページがたくさんのブロックに分割されているため、ユーザーの操作中にコードの一部を更新できるようにするためには適していません。 –

関連する問題