nostr:npub133vj8ycevdle0cq8mtgddq0xtn34kxkwxvak983dx0u5vhqnycyqj6tcza rx-nostr で { limit: 100 } の REQ をするだけのこのページとトップを行き来するとちょいちょい遷移が重いんだけど改善する方法ってあったりしますか?それとも 100 x リレー数 のイベントが流れるからどうしようもないのかな

https://svelte-sandbox-rx-nostr.pages.dev/performance

中身

https://github.com/SnowCait/svelte-sandbox/blob/36ebb2f77a4d53050583ecbfbf8a66ba1a130828/rx-nostr/src/routes/performance/%2Bpage.svelte

Reply to this note

Please Login to reply.

Discussion

Empty が比較用のページ

長野にいる (いく) ので、いまわかりません!3日後で…

hoi

横からすみません、もしかしたらTopへのページ遷移時に明示的にunsubscribe()したら改善したりしませんか?

nostr:nevent1qqsfzhphk6qvzpymrcyl447q3f3nqj67rweata8ly7eawvs28q3h2cspy9mhxue69uhhyetvv9uj66ns9ehx7um5wgh8w6tjv4jxuet59e48qtczyzpa226rv0fdr0z6pxx700n8cystld7qem5wlm7cadhyyde27frgjqcyqqqqqqgsnwefa

一気に押し寄せた 100xリレー数の verify が UI スレッドを詰まらせてしまっているのが原因です。このことは skipVerify オプションを有効にすると解消することから確認できます。

とすると解決法は verify を別スレッド (worker) に逃がしてあげるしか方法がないんですが、現状のライブラリ実装では verifier は同期的な関数であることを要求しているので素直に rx-nostr の API に乗って解決するのは難しいです (解消は可能ですが破壊的になります)。

今のところワークアラウンドとしては verify しないか、worker で動く verifier を自力実装してもらうしかないです。

殴り書きなので細かい粗には目を瞑ってほしいんですが、一応 PoC としてはこんな感じです。これだとサクサク動きます。

あれ、skipVerify 試したつもりが試せてなかった

サンプルコード助かります:kami: