個人開発したRailsアプリでMiniMagickを使っているのですが、画像のアップロードに2分以上かかっていました。
nginxでチャンク転送の設定をしたら、10秒ほどに短縮することができました。
自分用の学習記録ですが、少しでも役に立てれば嬉しいです。
また、画像データのアップローと表示速度はもっと上げたいので、他にいい方法があれば教えていただけるとありがたいです。
チャンク転送
チャンク転送とは簡単に言うと、データをチャンクと言う単位に分割して転送することだそうです。
通常、動的に画像を生成するような場合、ファイルのサイズがわかるまでレスポンスが返せないため、サーバーの応答性能が低下してしまいます。
チャンク転送を使うことで、最終的なサイズがわからないボディを少しずつ転送できます。
HTTPのヘッダで設定を行います。
Transfer-Encoding:chunked
nginxでチャンク転送設定
Webサーバーにnginxを使っているので、nginxでチャンク転送の設置を行います。
confファイルのserverディレクティブに以下を追加。
chunked_transfer_encoding on;
設定を反映させるためのnginx再起動。
$ sudo systemctl restart nginx
これだけです。
チャンク転送の設定が完了しました。
これで画像のアップロード速度が改善されるはずです。
されてなかったら、お力になれずすみません。
補足
nginxの公式サイトを確認すると、チャンク転送はどうやらデフォルトでonになっているようです。
なので、実際どこまで効果があるのかはわかりませんが、僕の場合は一行追加することで画像のアップロード速度が劇的に改善しました。
なので、よかったら試してみてください。