web-dev-qa-db-ja.com

適切なファイルサイズのアップロード制限を決定するにはどうすればよいですか?

当社のWebアプリケーションには、ユーザーがサポートドキュメントをアップロードできるフォームが含まれています。多くのユーザーが携帯電話のカメラを使用して、レシートまたは証明書の写真を撮ってアップロードすることが予想されます。

サーバーは、ファイルごとのファイルアップロードサイズ制限(upload_max_filesize)を課します。デバイスの配列を取得し、カメラが出力する画像のサイズを確認するだけでなく、この決定にはどのような要素が必要ですか?

(たとえば、ファイルサイズが大きいと、フォームの送信時間が遅くなり、許容できないユーザーエクスペリエンスが発生する可能性があります。ファイルサイズが小さいと、一般的な携帯電話のカメラ出力に対応するのに十分な大きさでない場合、不満が生じる可能性があります。)

9

Webアプリケーションを実行していて、同じ質問に出くわします。

考慮事項は次のとおりです。

  • 大きなファイルを保存するにはコストがかかります(クラウドリポジトリのディスク領域または大きな物理サーバーに移動する必要がある)。

  • このコストは、アプリケーションに設定した制限を満たすために画像を圧縮またはトリミングできない場合があるユーザー(特に初心者または高齢ユーザー)による苦情への対応に費やされた時間を上回ります。

私たちのケースでは、10 MBの制限を実装することを決定しました。それでも、高解像度でのスキャナーの使用がこの制限を超えることがあります。モバイルの使用率がかなり高かったのは事実ですが、ユーザーが画像をアップロードする方法はこれだけではありませんでした。スマートフォンの写真は2〜4 MBの範囲になる傾向がありました。

初期段階にあり、多くのファイルを期待しない場合は、大きな魚をフライする可能性が高いため(他のUXの問題に焦点を当てるなど)、上限を高く設定することを検討する必要があります。しきい値に達した後は、いつでも料金を請求できます。別のオプションは、アップロード後にファイルを圧縮するAPIと統合することです。多くのものが利用可能であるか、またはあなたは迅速で汚いカスタムのものを書くことができます。私たちはフリーミアムのものを使いました。

もう1つの考慮事項は、ファイルの保存方法です。開発者がファイルをDB内のファイルへのパスではなくBLOBとして保存すると、大きなファイルを使用すると、DBが急速に大きくなる可能性があります(DBバックアップ戦略のような他の影響が生じる可能性があります) )。

選択内容に関係なく、ユーザーからのフィードバックの1つは、信頼できるWiFi接続の背後でファイルアップロードの使用を推奨するコピーを含めることでした。このようにして、ユーザーは、提出が遅いことに不満を感じるのではなく、都合がいいときに戻ってくることができます。

4
vphilipnyc

それが私であり、画像についてのみ話している場合は、2.5 MBから3 MBの範囲のファイルサイズ制限から始めて、それがうまくいくかどうかを確認します。

このサイズ範囲の私の根拠は次のとおりです。

  • 最も人気のあるスマートフォンモデルは2MB〜3.5MBの範囲で写真を撮ります
  • 領収書や証明書の写真を撮ると、通常の家族や風景の写真よりもデータが少なくなります(ファイルサイズが小さくなります)。
  • このサイズ範囲のファイルはアップロードに時間がかかりません

ユーザーから一般的に制限に問題があるかどうかがすぐにわかり、後でいつでも制限を引き上げることができます。

また、-ファイルサイズが大きいと、フォームの送信時間が遅くなり、許容できないユーザーエクスペリエンスが発生する可能性がありますこれは、ユーザーが実際に大きな画像をアップロードしようとした場合にのみ当てはまります。つまり、サイズを10MBに設定していて、ほとんどのユーザーが約2MBのサイズの画像をアップロードしようとしている場合、2.5MBに制限を設定した場合よりも遅延に気付くことはありません。

6
Monomeeth

あなたはこの問題を考えすぎています。 5MBと5GBの制限のどちらかを決定せざるを得ない場合は1つですが、10MBまたは20MBの場合はもう1つです。真実は、現在、静的ファイルの保存は非常に安価です。それがあなたに多くのお金を費やしているなら、あなたはそれを間違っている可能性があります。誤解しないでください。これは何度も自問してきた質問です。正直に言って問題はありません。

あなたが自問しなければならない質問は、なぜ制限を実装しているのですか?その質問への答えは、単にそれが何であるべきかを尋ねるよりも、あなたが決めるのを助けるのにはるかに有益です。

平均アップロードが小さい画像またはスキャンの場合は、50MBに設定します。最悪の場合?ユーザーがヒットすることはありません。制限を追加するために制限を追加しているようです。もう一度言いますが、なぜ追加するのですか?大量のアップロードが原因でサーバーのメモリ不足を防止しようとしていますか?それは正当な理由です。その場合、同時アップロードはいくつあると思いますか? 10GBのメモリを搭載したサーバーがあり、一度に5つを超えるアップロードがあると予想しない場合、10MBは不必要に制限されているように見えます。

tl; drそもそもなぜ制限を課しているのかという答えは、制限がどうあるべきかについての優れた出発点です。

3
michael

まず、データを見てみましょう。アップロードされるファイルの平均サイズはいくつですか?外れ値とは何ですか?外れ値は正当なファイルをアップロードしようとしましたか?ユーザーは、正当なファイルをアップロードしないことに不満を感じていましたか?競合他社のアップロード制限は何ですか?

ファイルのサイズが心配な場合は、CRONタスクまたはGulpタスクの設定についてIT部門に相談して、アップロード後に画像を圧縮することができます。 Linuxサーバーでは、これはImageMagick CLIを使用して画像に対して簡単に実行でき、PDFTKはPDFドキュメントに対して使用できます。

このようにして、ユーザーをイライラさせる代わりに、タスクの自動化によって圧縮を相殺します。 (ただし、大量のアップロードを防ぐために、最大アップロードサイズはまだあります)。

2
Samuel C