2

私は php (codeigniter) でサイト フレームワークを開発しており、画像のアップロード時に画像のバージョン管理を導入して、画像のキャッシュを利用できるようにしたいと考えています。最も簡単な方法は、イメージを md5 してファイル名として使用することですが、次の理由からこの方法は好きではありません。

1) 画像名は SEO フレンドリーではない

2) md5 ハッシュが不必要に長く見えるため、より大きなデータベース フィールドが必要です。

そのため、次のようなアプローチを使用することを検討しています。

スペースの代わりにアンダースコアを使用して入力した画像の名前でファイル名を開始し、ランダムに生成された整数、たとえば 8 桁の長さを追加します。これは、その名前で既存のイメージを確認し、存在する場合は整数を再生成する必要があることを意味します (ただし、そうではない可能性があります)。

おそらく、画像サイズごとに一意のファイル名も必要になるので、ここでの解決策は、ファイル サイズを表すプレフィックスを追加することだと思います。

フレームワークがデプロイされたら変更するのは面倒なので、これを最初に正しくしたいので、本当に入力を探しています

a)私の懸念が正当化されるかどうか(特に、ファイル名はSEOのために何かを行い、数字のランダムな文字列の長さが影響しますか)

b) 私が提案したアプローチに関して、他に気をつけたりチェックしたりするべきことがあるかどうか。

c)より簡単なアプローチ、おそらくはるかに短い結果を生成するハッシュアルゴリズムはありますか?

d) これを行う ci lib は既に存在しますか?

ご意見とアドバイスをありがとうございます

4

1 に答える 1

2

これはあなたの質問のいくつかに答えます:

スペースをアンダースコアに置き換えるだけでは、より奇妙な文字をチェックする必要があるため、ファイル名をきれいにするのに十分ではありませんが、CI のセキュリティ ライブラリで sanitize_filename() メソッドを使用できます: http://ellislab.com/codeigniter/user-guide /libraries/security.html

元のファイル名を保持したい場合、あなたのアプローチは私には良さそうです。ただし、ファイル名の末尾にある 8 桁の整数は、その末尾のファイルが存在するかどうかを単純なインクリメンタル ループ チェックで '-1'、'-2'、'-3' に置き換えることができます。

File Upload ライブラリは、チェックアウトできるものです - http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html。柔軟性があり、元のファイル名を保持するように構成できます。Security lib から sanitize_filename() を取得すると、まさに必要なことを実行できるはずです。

すべての CI アプリケーションで、常に暗号化されたファイル名を使用します (このオプション機能は、CI ファイル アップロード クラスによって提供されます)。同時に、既存のファイルに番号を追加するか (暗号化が使用されていない場合)、別の暗号化された名前を付けることで (暗号化オプションがオンの場合)、既存のファイルを上書きしないようにライブラリを構成できます。ファイル名の一貫性が保たれるので、私はこの方法が好きです(ただし、長くてSEOに適していませんが、ALTタグにより検索エンジンへの露出が増えます).

于 2012-12-17T14:58:07.110 に答える