2012-02-07 15 views
0

現在、何百万もの動的ページを持つプロジェクトを実行しています。それらのページの内容はデータベースから収集され、もちろんデータベースは多数あり、テーブルも多くなっています。これらのデータベースの内容は頻繁に変更されることはなく、MySQL接続やクエリのためのサーバーへの不必要な負担を軽減するために、コンテンツタイプに応じて7日間または1ヶ月間Smartyキャッシュを実装しました。Smarty 3を使って巨大なページをキャッシュする方法

私の問題は、私が1つのキャッシュディレクトリに膨大な数のキャッシュされたページを持っていて、何とかそれが全体的なパフォーマンスを低下させたと思うようになることです。

だから、何百万ものキャッシュされたページを1つのディレクトリに置くことでパフォーマンスの問題を教えてもらえますか?または、キャッシュされたファイルの格納をどのように管理できますか?または、巨大なページ数でSmarty Cachingを正しく使用するにはどうすればよいですか?

答えて

0

すべてのキャッシュファイルを1つのディレクトリに配置しても、ループ内のファイルを読み込まない限り、パフォーマンスの問題は発生しません。

しかし、スマートの最新バージョン(この回答を書いている時点で3.1.13)に問題があります(smarty forumの説明を参照)。特定のキャッシュIDまたはグループのキャッシュをクリアすると、smartyはすべてのファイルを1つずつ読み込み、1つのキャッシュが削除されるまでに時間がかかります。

0

ダイナミックページのHTMLコンテンツをユーザーに直接配信します。 これはさまざまな方法で行うことができます。 これを行うには余りにも多くの方法がありますが、何百万ものページがあり、この手順を適用します。すべてのユーザーが最初のチェックがキャッシュされていた場合、キャッシュがキャッシュファイルにページ

  • と基本的に生成し、サーブ、その後でない場合は、そのページ
  • のために存在している

    1. あなたは再びそのキャッシュファイルを再生成することができます有効期限。

    私はあなたがPEAR cacheLietであることを示唆することができますまたはこれは非常にあなた自身のコードを書くことができます簡単です。しかし、PEAR cacheLiteを使用する利点は、ファイル、データベース、その他のキャッシングシステムのような多くのドライバがあることです。

    ディレクトリをキャッシュするには、サイトのカテゴリまたはサイトのタグに基づいて異なるファイルを作成します。

  • +0

    Smarty Cachingで提案されたすべてのリストを実装しました。 1つのディレクトリに数百万のキャッシュされたページがある間、またはSmarty 3に滞在しているときにより良い解決策がある場合は、パフォーマンスに関する問題について知りたいです。 – Prakash

    +0

    1つのディレクトリに置くとパフォーマンスの問題は発生しません。 –

    0

    リバースプロキシキャッシュとしてVarnishを使用することをお勧めします。多くの静的ページをキャッシュするのに最適です。