1

これは理論的な質問です。

Twitterはユーザープロフィール画像を次のように保持します:

https://twimg0-a.akamaihd.net/profile_images/2044921128/finals_normal.png

たとえば、2044921128ディレクトリを含むサーバーがあることを想像することは不可能です。おそらくこのURLはmod_rewrite?を使用して作成されます。

では、非常に多くのユーザー画像を保存するにはどうすればよいでしょうか。このスキームを完了する方法:

  1. ユーザーが選択すると、PHPスクリプトが自分のプロフィール写真となるはずの画像をアップロードします。
  2. PHPスクリプトは、名前を変更し、この画像を保存するためのPATHを設定し、移動して、最後にこのパスをデータベースに追加して、さらに使用できるようにします。

では、PATHはどのように見える必要がありますか?

4

2 に答える 2

1

Akamai(URLに基​​づいてTwitterの画像を保存する)が実際にファイルをディレクトリ構造に保存するということは何もありません。それらがメモリ(ディレクトリ構造などに裏打ちされている)、データベース(SQL / NoSQL)、またはアカマイが効率的であると判断したその他のストレージメカニズムに格納されている可能性は十分にあります。

で始まるURLのすべてのリクエストをルーティングできます

https://yourService.com/profile_images/

選択したPHPスクリプトに変換し、残りのURLを解析して、要求されている画像を判別し、解析されたURLに基​​づいて必要なストレージメカニズム(おそらくデータベース)から保存/取得します。

これは、mod_rewriteを使用してそれを行う1つの方法を示す短いブログ投稿です。

http://www.phpaddiction.com/tags/axial/url-routing-with-php-part-one/

于 2012-08-14T17:53:29.443 に答える
1

ほとんどのOS-esは、単一のディレクトリ内に1024を超えるディレクトリ/ファイルを含めることを推奨していません。これは、その中の特定のリソースのスキャンと検索が遅くなる上記の数値であるため、akamaiがprofile_images内に2044921128のディレクトリを持たないことは安全だと思います。 !!

これは、profile_images内で生成された特別な一意の識別子番号であるか、URLルーティングを使用したさまざまな方法の1つを使用してリソースを見つけることができます。いずれにせよ、ディレクトリの数に対応するとは思いません。

于 2012-08-14T18:02:14.130 に答える