0

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

さて、私の問題は、単一のキャッシュ ディレクトリに膨大な数のキャッシュ ページがあり、全体的なパフォーマンスが低下したのではないかと考え始めたことです。

では、単一のディレクトリに何百万ものキャッシュされたページがある場合のパフォーマンスの問題を誰か教えてもらえますか? または、これらのキャッシュされたファイルの保存をどのように管理しますか? または、膨大な数のページに Smarty Caching を正しく利用するにはどうすればよいですか?

4

3 に答える 3

0

Varnish をリバース プロキシ キャッシュとして使用することを検討してください。大量の静的ページをキャッシュするのに最適です。

于 2012-02-07T17:14:24.067 に答える
0

動的ページの HTML コンテンツをユーザーに直接提供します。これはさまざまな方法で行うことができます。それを行う方法は多すぎますが、何百万ものページがある場合は、この手順を適用してください。

  1. ユーザーが最初に来たときに、そのページのキャッシュが存在するかどうかを確認します
  2. そうでない場合は、キャッシュを生成してページを提供します
  3. 基本的にキャッシュファイルの有効期限が切れると、そのキャッシュファイルを再度生成できます。

私が提案できるベースのライブラリは、PEAR cacheLiet またはこれは非常に単純で、独自のコードを記述できます。しかし、PEAR cacheLite を使用する利点は、ファイル、データベース、その他のキャッシュ システムなどの多くのドライバーがあることです。

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

于 2012-02-07T16:13:21.873 に答える
0

すべてのキャッシュ ファイルを 1 つのディレクトリ内に配置しても、ファイルをループで読み取る場合を除き、パフォーマンスの問題は発生しないことがわかりました。

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

于 2013-05-19T07:27:44.900 に答える