1

Zend Framework は初めてです。私は Zend キャッシュを使用しています。ドキュメントからコードをほとんどコピーしました。これが私のコードです。

 $frontendOptions = array(
                'lifetime' => 3600, // cache lifetime of 1 hour
                'automatic_serialization' => true
        );

        $backendOptions = array(
                'cache_dir' => '../tmp/' // Directory where to put the cache files
        );

        // getting a Zend_Cache_Core object
        $cache = Zend_Cache::factory('Core',
                'File',
                $frontendOptions,
                $backendOptions);


        // see if a cache already exists:
        if( ($paginator = $cache->load('index' . $page)) === false ) {


            $table = new self;
            $query = $table->select()->setIntegrityCheck(false);
            $query->from('feeds', array('feeds.blog_id', 'feeds.date_created', 'feeds.feed_id', 'feeds.post_content', 'feeds.post_link', 'feeds.post_title', 'feeds.post_thumb'));      

            $query->where('feeds.date_created <= NOW()');

            $query->order('feeds.date_created DESC');


            $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbTableSelect($query));
            $paginator->setItemCountPerPage(10);
            $paginator->setCurrentPageNumber($page);

            $cache->save($paginator, 'index' . $page);

        }

            return $paginator;

したがって、このクエリを実行する Web サイトにアクセスすると、ファイルが作成されていることがわかります。これも 19 または 20 KB のファイルであり、どのページがキャッシュされているかに関係なく、ページは以前と同じ速度で読み込まれます。また、何かを更新するとデータベースには、キャッシュではなく更新されたバージョンが表示されます。キャッシュの有効期間中、キャッシュは更新を表示しないと思いました。助言がありますか?ありがとう

4

2 に答える 2

2

ページネーター自体は、キャッシュしたいオブジェクトではありません。ページネーター内で行われるdbからの結果をキャッシュする必要があります。

これを行うには、キャッシュ オブジェクトをページネーターにアタッチする方法があります。

Zend_Paginator::setCache($cache);
$paginator->setCacheEnabled(true);

ページネーターがキャッシュを処理します。

于 2012-11-15T15:39:38.433 に答える
0

キャッシュから復元されたページネーターは、本来すべきこと、つまりクエリを実行します。そして、キャッシュからロードするたびにそれを行います。

ページネーターではなく、最終結果を保存する必要があります。

于 2012-11-10T15:47:31.897 に答える