Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように #6388

Closed
wants to merge 10 commits into from

Conversation

tamaina
Copy link
Contributor

@tamaina tamaina commented May 18, 2020

Summary

Resolve #6385

ページがバックグラウンド状態のときは、ページのスクロールが中間であるときと同じ処理をします。

@tamaina tamaina changed the title タブがバックグラウンド(非表示)のときにタイムラインを更新しないように feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように May 18, 2020
@tamaina tamaina changed the title feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように WIP: feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように May 18, 2020
@tamaina tamaina changed the title WIP: feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように May 18, 2020
@tamaina
Copy link
Contributor Author

tamaina commented May 18, 2020

c2.a9z.devで動作中

@tamaina tamaina changed the title feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように WIP: feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように May 18, 2020
@tamaina tamaina changed the title WIP: feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように May 18, 2020
@syuilo
Copy link
Member

syuilo commented May 20, 2020

なんか逆に感じる
今の実装だとページがバックグラウンドでもノートはタイムラインに追加されていくので、ページが復帰したときに一度に大量のノートが表示されたりすることはなく、重くならない
このPRを適用すると、ページがバックグラウンドだとノートが追加されないので、ページ復帰したときに大量のノートが追加されて重くなりそう

@tamaina
Copy link
Contributor Author

tamaina commented May 20, 2020

今の実装だとページがバックグラウンドでもノートはタイムラインに追加されていく

それがそうではないようです。

長時間放置されているとブラウザはDOMの変更をキューに積んでいくらしく、結果的にタブに移動したときにたくさんのDOMの変更が一度に発生することになります。

このPRを適用すると、ページがバックグラウンドだとノートが追加されないので、ページ復帰したときに大量のノートが追加されて重くなりそう

ノートをopts.displayLimit(初期値30)ぶん一度に入れ替えるのはそこまで重いとは思いません。これで重いならMisskeyの起動時は相当重いということになります。

@syuilo
Copy link
Member

syuilo commented May 31, 2020

これって効果音が一斉になって鼓膜が破裂する問題も修正される?

@tamaina
Copy link
Contributor Author

tamaina commented May 31, 2020

いいえ

修正を試みたんだけど、破裂する問題の原因がよくわからなかった

@EbiseLutica
Copy link
Contributor

戻ってきたときに溜まっているノートの数がわかるのであれば、一定以上のノートが溜まっている場合は一回タイムラインをリロードしたほうが良いかも:eyes:

@tamaina
Copy link
Contributor Author

tamaina commented Jun 10, 2020

それはどうして?WebSocketで流れてきてプールしてある投稿はキャプチャされていないので、表示するときには最新の情報ではないから?

@tamaina
Copy link
Contributor Author

tamaina commented Jun 10, 2020

WebSocketで流れてきた投稿がもったいない気もするけどまあ別にそれでもいいのか

@tamaina
Copy link
Contributor Author

tamaina commented Jun 10, 2020

てかこれマージしてないのね()

c2で使っているのでマージしたかどうか気に留まらなかった

@EbiseLutica
Copy link
Contributor

効果音破裂現象の解消になるかなと思ったのと、ストリーミングで振ってきたデータが例えば300件くらいあった場合、300ノートがそのまま仮想DOMに積まれるんじゃないかなと思って(Misskey 起動時に30件分しか積まないのとこのケースだと話が違うような気がしたので)

@EbiseLutica
Copy link
Contributor

コード読んでから物を言うべきだったかも😭

@tamaina
Copy link
Contributor Author

tamaina commented Jun 10, 2020

効果音破裂現象の解消になるかな

効果音破裂は多分解消しない
破裂が起きるのが、昔(= socketにノートが来たときすぐ)に呼んだAudioがなぜかタブを開いたときに再生されてしまっているというものなので

300ノートがそのまま仮想DOMに積まれる

仮想DOMに積まないためのプルリクなんですよねこれ()

コード読んでから物を言うべきだったかも

せやな()

@EbiseLutica
Copy link
Contributor

なるほど。破裂音の解消は効果音をすぐに再生するというのをやめて他の方法を取るか、効果音APIの改良をするかという形で別issueに切り分けて取り組みたい

@tamaina
Copy link
Contributor Author

tamaina commented Jun 10, 2020

そもそもIssueはもうあったはず

@tamaina
Copy link
Contributor Author

tamaina commented Jul 2, 2020

これ、プールしているノートや通知は、Vueが起動しないのでノートや通知の削除とかノート内のリアクションの増加とかは見逃してしまうことになっているわね。
これはバックグラウンドに限らず、下にいるときにも起きている。

@tamaina tamaina changed the title feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように WIP: feat(client): タブがバックグラウンド(非表示)のときにタイムラインを更新しないように Jul 2, 2020
@tamaina
Copy link
Contributor Author

tamaina commented Aug 21, 2020

よくわからん

@tamaina
Copy link
Contributor Author

tamaina commented Aug 21, 2020

なおった

@tamaina
Copy link
Contributor Author

tamaina commented Aug 21, 2020

これ、プールしているノートや通知は、Vueが起動しないのでノートや通知の削除とかノート内のリアクションの増加とかは見逃してしまうことになっているわね。
これはバックグラウンドに限らず、下にいるときにも起きている。

これってどうなったんだろ、まだ直ってないか?

@tamaina
Copy link
Contributor Author

tamaina commented Aug 21, 2020

NotesPoolみたいなクラスを作って管理するべきなのかなと

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ページがバックグラウンド状態のときはタイムラインを更新しないようにする
3 participants