質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • Ruby

    7910questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    7467questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • ImageMagick

    94questions

    ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

画像のリサイズについて(ビューで処理するのと、アプリケーション側?で処理するのとではどちらが速度が早いのでしょうか?)

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 798

cDm_48

score 164

現在、画像を多く使用するwebサービスを作ろうと思っております。
そこで画像のリサイズについて疑問が生じたため、質問に至りました。

※railsでの開発を想定しておりますが、今回の検証にあたっては言語は特に問いません。

画像をたくさん使う大手のweb会社ではアプリケーション側(ImageMagick等を用いて)で加工しているというイメージがあります。(処理1)

その一方で、ビュー側でサイズを指定し、リクエスト毎にリサイズしてしまうという方法の方がとても簡単にできるのではないかと思います。(処理2)

今回の要件としては
・PC以外にもスマホ等も想定しているため、端末毎にリサイズの大きさを変えたい
・そのため、リサイズした画像をサーバーにおいてしまっては端末毎に結局リサイズしなくてはいけないため、端末毎からのアクセスが来る度にリサイズをする


このような条件の元、処理1と処理2ではどれくらいのレスポンスの差があるのか知りたいです。
実装の簡易さでは圧倒的に処理2かと思われます。

但し、扱う画像数の総数が数百万枚とかになったときには処理1の方が早いのでしょうか?

結局、端末毎でのリクエストの度に、リサイズをするので、処理1と処理2では個人的には差がないようにも見えます。

ただ、画像数の総数が数百万枚以上扱っているweb会社では処理1を採用している印象があります・・・。(違ってるかもしれません。)

宜しくお願いします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

ちょっと処理2のイメージがわかなかったのですが、Javascriptか何かでクライアントに仕事をさせるということでしょうか?
だとしたら、データ転送量の問題を解決できないのでは?
縮小表示させるにしても、縮小処理させるにしても元データはクライアントに送らなくてはなりませんよね?

それとも、リクエスト毎に元データから縮小データを生成して送るんでしょうか?
だとしたら、リクエスト毎にリサイズ処理がかかるのでリクエストが多ければそれだけサーバーのリソースを食うことになります。

後、考えられるのは最初の表示があったときにリサイズ処理して、それ以降はリサイズされたものを送る、という方法でしょうか?
遅延処理の考えですが、コードの見通しが悪くなりそうです。

処理1だと、アップロードされたときの処理が多くなりますが、フロントエンドのHTTPDがキャッシュしてくれたりとか、色々うれしいことが多いように思えます。
また、アップロードの時のレスポンスが多少遅くなっても、ユーザーの体感的にはあまり問題がなさそうですし。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

サーバのスペックにもよりますが、一般的にいえば、処理2の方が速いと思います。

処理2の場合、view側ということなので、javascriptか
cssのメディアクエリを使って動的にサイズ変更することになると思います。

ただし、javascriptやcssを用いた場合、解像度を変更したりといった高度な画像編集はできません。
質問にあったリサイズ程度であれば、javascriptかcssでまかなえると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • Ruby

    7910questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    7467questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • ImageMagick

    94questions

    ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

  • トップ
  • Rubyに関する質問
  • 画像のリサイズについて(ビューで処理するのと、アプリケーション側?で処理するのとではどちらが速度が早いのでしょうか?)