2011-07-29 7 views
0

可能性の重複:
What are the downsides of longer directory paths/names and URL's on a LAMP site?LAMPサイトで長いディレクトリパス/名前とURLを使用する際の短所は何ですか?

LAMPサイト上の長いディレクトリ・パス/名とURLのの欠点は何ですか?

私はできるだけ効率的に自分のサイトに画像を整理しようとしています。サブディレクトリには1,000を超えるサブディレクトリがなく、ディレクトリを簡単に維持できるように多くのネストされたディレクトリを使いたいと思っています多くのユーザーにわたって最悪のシナリオで

、画像はこのような何かを探して格納されます:

./images/76/543/7654321/640/1.jpg 

は重大な欠点は、このような単純なもの対非常に多くのサブディレクトリを持つことにあります。

./i/a7/c3/5e.jpg 

サーバーが掘り下げなければならないサブディレクトリが増えれば、それだけ時間がかかり、ディレクトリ構造が長くなればなるほどURLは長くなり、HREFがより多くのスペースを占有するようになるHTML文書しかし、どれだけの違いが生まれますか?何百万人ものユーザーにスケールアップすることを考えてみましょう。これは私が考慮する必要がある(短いディレクトリ構造と長いディレクトリ構造)か、長いディレクトリ構造にするのはいいですか?

ありがとうございます!

答えて

0

あなたのニーズと経験に合わせて "成長"するストレージを使用できます。

イメージ自体に基づいてイメージのファイル名を作成するとします。たとえば、そのコンテンツにSHA1を使用するとします。 b494ad9057e09277fd02e811bb8e86b322a5166b.jpgを名前にすることができます。

イメージはファイルシステムのimagesディレクトリに格納されます。

ファイルにアクセスするために使用するURIは、常にimages/b494ad9057e09277fd02e811bb8e86b322a5166b.jpgです。

ここで、魔法はあなたのApacheのmod_rewriteの内部で起こります。要求されたリソースは任意の方法で分割することができます。たとえば、images/b494ad9057e09277fd02/e811bb8e86b322a5166b.jpg(ハッシュの20番目の文字の後のスラッシュに注意してください)にしてそこからロードします。

ファイルシステムのエキスパートから回答が得られたら、URIを分割する方法を変更して、すべてのファイルを新しい予定の場所に移動することができます。ディレクトリをトラバースして「元の」ファイル名を作成することは常に可能です階層。

また、良いハッシュはハッシュに「均等に分散した文字」を作成しなければならないので、ディレクトリはバランスの取れた方法で多かれ少なかれ満たされるはずです。

+0

物事を移動する前に、その単一のイメージディレクトリに大量のファイルがある場合は、inodeテーブルを最大にすることに注意する必要があります。 –

+0

Inodeはパーティションごと(ファイルシステム)であり、ディレクトリごとではありません。したがって、ディレクトリ階層全体が1つのパーティション上にある限り、構造ディレクトリをHAVINGするよりもinode数が多くなることはありません。 – Shi

関連する問題