2012-01-25 8 views
3

GoDaddyには多数のクライアントサイトがあり、それらは複雑なサイトであるため、移行に時間がかかることがあります。結局のところ、彼らは専用の環境に陥るでしょうが、今のところ、私たちはGoDaddyの共有ホスティングのシナリオに悩まされています。PHPキャッシュ、複数のディレクトリにキャッシュを保存

スタティックファイルに出力バッファPHPキャッシュを設定し、3〜4時間ごとにクリアするようにします。これを達成するためにオンラインで見たことは、すべてのキャッシュファイルを1つの大きなディレクトリにスローするようです。

GoDaddyには、共有環境のパフォーマンスが低下するため、1つのディレクトリに1024以上のファイルを許可しないというポリシーがあります。私はその事実に賛同しませんが、PHPキャッシュの巧妙な解決法があることを願っています。そこには、入れ子構造のキャッシュ構造があります。

アイデア?

答えて

3

あなたができることは、ディレクトリをハッシュしてサブディレクトリ構造を作成することです。その多くはもちろん、あなたがキャッシングしているファイルをどのように格納/命名しているかに依存しているので、これは単なる一般的なアプローチです。

たとえば、20150.phpページをキャッシュする場合は、ファイルを/cache/20/20150.phpとして保存し、各第2レベルのディレクトリを1000個のファイルに制限します。 20150.phpをロードすることがわかっている場合は、ディレクトリ名として1000桁の数字を使用することがわかります。

非常に大量の画像と文書が、文書管理システムによってファイルシステムに保存されることが多い方法です。これは、キャッシュしているコンテンツにアーティクルIDがデータベースに関連付けられている場合に理想的です。

もう1つの方法は、ページの実際のハッシュ(md5、または選択したアルゴリズム)を作成し、その上に構造を置くことです。先頭のディレクトリはハッシュの最初の3桁例えば、ファイルは、/cache/c88/ad6/c88ad6a7421ef2b0d7451c3390a00a39.phpに格納されている可能性があります。

もう1つのことは、またはコースは、あなたが実際にが内容をキャッシュするためにが必要であることを知るように、あなたのデータベースが最適化されていることを確認することです。キャッシュは問題ありませんが、db(索引、最適化された問合せ)から抜け出せるものをすべて絞り込んだら、これを実行する必要があります。

memcachedなどのサーバーもありますが、共有ホスティングにはサーバーがありません。利用できないと仮定しています。

+0

これはお勧めです。私は今、これらの行に沿って何か作業をしています。もし私がそれを動作させることができれば、私は他の人のためにこのポストに戻ります。 –

関連する問題