1

データベースにファイル名の値を保存せずに、ユーザーが生成したアップロードを処理する方法を決定するのに苦労しています。ユーザーがプロフィールのアバター/画像をアップロードすると、CDNに作成します。PHPのアバターヘルパーはコンテナのURLを知っているので、簡単にエコーできます'http://cdn-static-url.com/'.$userId.'.jpg

ただし、ユーザーがアバターを再アップロード/変更した場合、TTLが期限切れになるまで古い画像がCDN全体にキャッシュされるか、パージリクエストを送信します(クラウドファイルを使用し、無制限のパージリクエストがありますが、それでもパージは即時ではありません)。

画像の再アップロードをどのように許可する必要がありますか。

  • すぐに変更を強制し、
  • パージのステータスをユーザーに警告します(「新しいイメージの更新にはX時間かかる場合があります」、これは見たことがありません)
  • CDNに新しいオブジェクトを作成します。これは、ファイル名への参照をMySQLに保存することを意味します(その後、ページにアバターのURLをエコーするたびにSELECTを実行します...)
  • 上記を使用して、各オブジェクトの現在のURLにMemcacheを活用しますか?
4

1 に答える 1

4

非常に安価ですが、実際に一般的に使用されるオプションは、変更ごとにリビジョンIDを生成することです。次に、そのリビジョンを使用して、まったく新しいファイル名を参照する<revision>.extensionか()、意味的に関連するURLにクエリパラメーターとしてリビジョンを追加します(user/profile.jpg?<revision>)。

于 2013-02-24T21:49:18.120 に答える