Skip to content

Instantly share code, notes, and snippets.

@tetsuharuohzeki
Created November 11, 2012 10:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tetsuharuohzeki/4054346 to your computer and use it in GitHub Desktop.
Save tetsuharuohzeki/4054346 to your computer and use it in GitHub Desktop.
無題
「コンテンツの読み出し時 (DOMContentLoaded相当のタイミング)に
DOM経由でコンテンツの中身を確認する」処理とかはUI操作を妨げる重い処理になったりするんで、
UIとコンテンツのスレッドが別じゃないとUIのフリーズに繋がったりする。
なのでUIのフリーズを回避しつつそういう処理をしたい場合は、
コンテンツの操作スレッド上で実行すれとかで非同期にすればいいんだけど、根本的にそういう処理って
コンテンツの中身に真っ当なDOM経由で触ろうとすると、どちらにせよコンテンツと同じスレッドで動かす必要がある。
よって結局コンテンツの読み出し自体のUXに影響がある。
だったらWorkerスレッド上で文字列から擬似的にDOMツリーを作成して、そのDOMを舐めれば問題解決する。
(Firefox for AndroidのReaderモードも似たようなことやってる)。
この手法使うと結果が非同期で戻ってくるので「コンテンツの読み出しが完了する前に処理を挟む」ということは不可能だし、
結果が非同期でいいならsetTimeoutでも十分検討できる話になったりする。
とかなんとか書いてたら、コンテンツの読み出し中にブロッキングな重い処理を入れるというのはどう頑張ってもアウトだし、
UIとコンテンツのスレッドを安易に分離しても解決できる話じゃなかったんで、
素直にworkerとかで非同期に作るか、
どうしても同期的にやりたかったらCとかアセンブラで超高速に処理させるしかないという結論に至ったという次第です
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment