2012-04-30 7 views
1

現在、私はMemcacheを使って自分のPHP pdo mysqlクエリを保存しています。巨大なmysqlクエリをキャッシュする最良の方法は?

しかし、私は約50,000のURLを持つ単一のページのサイトマップを作成したいと思います。このクエリをキャッシュするには別の方法が必要かもしれないと思います。理想的には、1日に1回だけクエリを実行し、その時間の間Memcacheに50,000のIDとタイトルを保存すると完全なスペースが無駄になると思っていますか?

ファイルを一時的な.txtファイルにgzipする方が良いでしょうか?または別の方法を完全に?

+2

実際のサイトマップファイルにこれらのリンクを「キャッシュ」しないのはなぜですか? 1日に1回しか構築されていない場合は、キャッシュオーバーヘッドを費やすことはありません。キャッシュは、データを構築するために頻繁にアクセス/高価なためです。 –

+0

MongoのようなセカンダリDB、またはSolrのような検索DBを考慮することもできます。 – Petah

答えて

1

私はマルクのコメントに同意します。 1日に1回、おそらくcronジョブでファイルを生成します。

サイトマップファイルには50,000 URLと サイトマップごとに10メガバイトの制限があります:

は、私はあなたが考慮しなければならない。この文のsitemaps、にあなたを参照してください。サイトマップは、gzipを使用して圧縮することができ、帯域幅を減らすことができます( )。

現在、私はサイトマップを動的に生成していますが、cronジョブに切り替えるのは私のリストです。

+1

結果を含むタイムスタンプの付いたサイトマップファイルを作成し、ファイルのタイムスタンプをチェックし、1日以上経過していれば新しいクエリを使用してファイルを再構築しますそのファイルを簡単に圧縮することもできます。キャッシュファイル名をmd5にすることもできますので、簡単に公開することはできません。 – Dan

関連する問題