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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

1回答

1446閲覧

動画のアップロード時にユーザーにレスポンスをすぐに返したい (Ajax)

randosel

総合スコア37

Ruby on Rails

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2017/06/14 09:48

動画のアップロードシステムを作成しています。

その際にユーザーにすぐにレスポンスを返したいです。

方法としてAjaxを思いつきました。
しかし、検索して出てくるサンプルを見て、これでユーザーに早いレスポンスが返ることが疑問なので質問します。

lang

1%h1 Movie List 2 %table{id: "movies", class: "table"} 3 = render @movie 4= link_to "New Movie", new_movie_path, remote: true

lang

1def create 2 @movie = Movie.build(movie_params) 3 respond_to do |format| 4 if @movie.save 5 format.html 6 format.js 7 else 8 format.js { render :new } 9 end 10 end 11end

lang

1$('#movies').html("<%= j (render @movie) %>");

Ajaxを利用するために、RailsではViewのformにremote: trueを書きます。
想像していたのは、リクエストをjavascriptのフォーマットで返し、jsコードでレンダリングする。
すると早くレスポンスが返る!です。

しかし、そもそも動画の送信に時間がかかったり、if @movie.saveにあるように登録することに時間がかかります。
そのあとにformat.jsをしているので結局レスポンスをすぐに返すことはできていないのでは??と疑問に思います。

動画のアップロード時にユーザーに早いレスポンスが返ることを目的とする場合、そもそもAjaxを使うことは正しいのか。
リクエストを受け取った際に、DBに保存→フォーマットを返すという順序は違うのではないかと思ったので、この2点について教えていただきたいです。

よろしくお願いいたします。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Ajaxは非同期に通信を行う(=サーバーにリクエストを投げた後、レスポンスが返るのを待たずにクライアント側の処理を進める)技術であって、サーバーの処理速度を向上させる類のものではありません。
レスポンスが早く返っている訳ではなく、レスポンスを待っていないので次の動作に素早く入っているのです。

ただ、 ユーザーに早いレスポンスが返ること という目的を、 とにかくアップロード直後に何らかの表示をユーザーに見せたい という内容に読み替えても良いのであれば、Ajaxは有効な解決策足り得ます。
例えば、

  • アップロード操作直後に「動画をアップロードしました」等のメッセージを表示。

実際は裏でアップロード処理が進行中

  • アップロード操作直後に画面上にプログレスバーを表示。

ユーザーは進捗を見ながら別の操作を行える

等の動作が、Ajaxを利用すれば実装できるでしょう。

投稿2017/06/14 15:02

philomagi

総合スコア267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問