2009-10-05 11 views
5

PHPを使用した中小規模のサイト向けにHTML/Textコンテンツキャッシングを探していました。主にサイトベースのキャッシュを探しています(それは悪い考えですか?)。また、ファイルベースでも構いません。小中規模のWebサイトのPHP簡単キャッシングテクニック

既存の解決策は大変ありがたいです。たとえば、Zend Frameworkは、疎結合されたコンポーネントでよく知られています。したがって、Zend_Cacheは候補になることができますが、セッションベースのキャッシュアダプタは見つかりませんでした。さらに、それは完全に独立した構成要素ではない。誰でもZend_Cacheを使うために必要なクラスは何ですか?

もう1つのオプションはPEARの - Cache_Liteです。

私はキャッシングコンポーネントを簡単に分離して学習曲線を減らすことができる他のフレームワークはありますか?

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

+0

私の共有ホスティングサーバーはAPCまたはmemcachedをサポートしていないと仮定しています。そのため、独自のキャッシュメカニズムを実装する必要があります。 –

答えて

2

Memcachedは、本当に軽量で効率的なソリューションとして心に浮かびます。

しかし、コンテンツを簡単なファイルにキャッシュすることもできます。ファイルシステムは通常高速で、問題なく読み取り/書き込みロックを処理します。そしてそれを扱うためのファンシーなライブラリは必要ありません。関数filemtimefile_put_contentsfile_get_contentsはすべて必要です。キャッシュは、filemtime()

  • を超えるN secondes前に書かれている場合

    1. チェック、それはあまりにも古いなら、コンテンツを生成して、単にそれウィットロードされない場合ますfile_put_contents()で
    2. をそれを書きますfile_get_contents()

    編集:私は数ヶ月前に投稿した投稿へのリンクを追加します:Best Solution for caching。それは完全にトピックではありませんが、あなたの研究であなたを助けるかもしれません:)

  • 0

    キャッシングをCakePHPに見ることができます。私はあなたがフレームワークからそれを分けることができるとは思っていませんが、動的コンテンツをキャッシュする方法を理解するのに役立ちます。

    1

    セッションベースのキャッシュは、おそらく良い考えではありません。ユーザーごとに特定の結果をキャッシュする必要がある限られた場合にのみ適切です(全員ではありません)。

    APCは広く普及しているので、アクセス権があればバックエンドのAPCを使ってZend_Cacheを調べます。 APCが利用できない場合、バックエンドのフラットファイルを持つZend_Cacheは、中小型のサイトに十分でなければなりません。

    1

    JPCacheはまともな軽量キャッシングライブラリです。

    0

    ほとんどのPHPキャッシングライブラリは、output buffer control functionsを使用して実装されています。 独自の非常に単純なキャッシングを同じ方法で実装できます。あなたが好きならそれは出力の終了時に自動的にトリガされますので、

    <?php 
    
    function callback($buffer) 
    { 
        // Code to store output in cache 
    } 
    
    if (/* Test cached copy is still valid */) { 
        /* Output cached copy to browser */ 
        exit(0); 
    } 
    
    ob_start("callback"); 
    ?> 
    
    <html>...</html> 
    
    <?php 
    ob_end_flush(); 
    ?> 
    

    あなたは、ob_end_flush()を省略することができます。

    注目すべきは、この構造がページよりも小さな単位の周りに折り返される可能性があることです。例えば、あなたはナビゲーションメニューだけをキャッシュすると言います。ブロックの周りにもう少し論理的にキャッシュされるロジックが必要ですが、原則は同じです。

    関連する問題