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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Q&A

解決済

1回答

3182閲覧

サーバー側での進捗状況の取得方法について

ruuuu

総合スコア174

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

0グッド

1クリップ

投稿2020/10/13 05:36

編集2020/10/13 05:39

axiosを用いて、サーバー側へデータを送り、サーバー側でプログラム処理を行なった結果をブラウザへ返すという一連の流れの中で、サーバー側でプログラムの処理が行われている間に、進捗状況を表示したいと考えています。
こちらの記事では、progressEvent.loadedを使用しているのですが、いまいち仕組みが分からないです。
サーバー側から、自動でどの程度プログラムの処理が進捗しているのかが、一定のタイミングで送られて来ているということなのでしょうか。
どなたか、ご助言頂けましたら幸いです。

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

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

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

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

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

ruuuu

2020/10/14 05:44

ありがとうございます。 参考にさせて頂きます
guest

回答1

0

ベストアンサー

サーバー側での進捗状況の取得方法について

いわゆる「動画投稿サイトのサーバーサイドエンコーディング」のような長時間の進捗を把握する方法でしょうか。

Browser Server | : +------->+ : | << ここの進捗把握したい? +<-------+ | :

ご参考にされている方法は upload イベントについての進捗表示になります
(上記、シーケンス図における (Browser)+------->+(Server) の矢線部分)。

サーバー側の進捗確認は、意図的な通信が必要です。

  • Ajax で サーバー側の進捗状況を返却するAPIを実装する。
  • WebSocket を利用してサーバー側の進捗状況を取得するなど。

axiosを用いて

axiosだけで実現するには前者になろうかと思います。


アップロードの伴わない事例

サーバー側で蓄積されたデータをCSVに変換してダウンロードさせる事例では
「10分後に再度アクセスしてみて」といったアナウンスで対応します。

これは「同一画面にユーザを縛り付けない」という、ユーザ体験上の配慮です。

Browser Server | : +------->+ << ブラウザ「サーバー側でやっといて! +<-------+ << サーバー「10分後にまた来な : : +------->+ << ブラウザ「できた? +<-------+ << サーバー「できてるぜ! | :

参考にされているサイトや修正依頼コメント欄で案内されているサイトのように
「アップロード時(通信経路を情報が流れているタイミング)に限って進捗表示する」という方法で十分に思います。

投稿2020/10/13 21:56

AkitoshiManabe

総合スコア5434

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

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

ruuuu

2020/10/14 02:06 編集

ご回答ありがとうございます。 > いわゆる「動画投稿サイトのサーバーサイドエンコーディング」のような長時間の進捗を把握する方法でしょうか いえ、こちらですが、文字列データを送信し、サーバー側でそれを元に処理を行わせる形で実装したいと考えております。 時間的にはおおよそ20~30秒程です。 自分が少々危惧している部分としましては、「(Browser)+------->+(Server)」であった場合、送信する文字列の文字数はほとんど変わらない為、サーバー側の処理に関係なくほとんど一定なのではないかなと思っているのですが、実際の所そうなってしまう可能性はありますでしょうか...?
AkitoshiManabe

2020/10/14 02:28

> サーバー側の処理に関係なくほとんど一定なのではないかなと思っている 公開されている JavaScript によるアップロード時の進捗表示処理ですと、そのとおりですね。 20〜30秒の間のサーバー側の進捗を正しく表示しようとすると、Ajax等でサーバーに進捗状況を問い合わせる処理が必要になります(この問い合わせがサーバー負荷になる)。最大30秒程度でしたら、ブラウザ側で「カウントダウンタイマー」を表示するなどして、進捗表示を偽っておき、終わったであろう時間経過で確認する手もあります。
ruuuu

2020/10/14 02:49

ご返信ありがとうございます。
ruuuu

2020/10/14 02:52 編集

>この問い合わせがサーバー負荷になる そもそもの話、サーバーに進捗状況を問い合わせる処理の部分がサーバーの負荷になって、全体的に処理時間が増えてしまったら、本末転倒な気もしますよね...
ruuuu

2020/10/14 03:26

>Ajax で サーバー側の進捗状況を返却するAPIを実装する。 こちら、少々気になったのですが、ajaxでデータを送った後に、サーバー側よりプログラムの進捗状況を確認し、返却する形になりますでしょうか...?
AkitoshiManabe

2020/10/14 05:33

> ajaxでデータを送った後に、サーバー側よりプログラムの進捗状況を確認し、返却する形 そのとおりです。 ブラウザは、サーバーの進捗状況を知るために、何らかの方法で通信しなければならないためですね。
ruuuu

2020/10/14 05:36

ありがとうございます。 どうするか、しっかりと検討してみたいと思います
ruuuu

2020/10/14 05:43

何度もすみません。プラスでもう一点お伺いしたいことがあるのですが、質問に掲載させて頂きました記事では、ファイルアップロードする際にどれくらいかかるのかの進捗状況を表示する例かと思うのですが、これらは、ファイルの容量をaxiosでサーバー側で送る際に、自動で計算し、サーバー側へ全て送り終わるまでの時間を計算しているといった仕組みになっているのでしょうか?
ruuuu

2020/10/14 09:30

ありがとうございます。 記事に記載がありました「転送の進捗」がポイントになって来ますね。 色々と理解することが出来て、助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問