BENKI -> CacheViewer

CacheViewer の技術的な話

今までに CacheViewer を作る上で苦労した点とか。
  • 起動が重い件について
    • CacheVisitor が同期処理なので他の処置が割り込みできない
    • 重い処理(Content-Type の取得とか全文検索の前処理)は
      非同期処理でやってるけど、それでも重い
    • visitEntries 中に openCacheEntry すると落ちる
    • flag="dont-build-content" すると速い
  • データベースが RDF と SQLite のハイブリッドな件について
    • これがパフォーマンス的に一番速かった
    • RDF は xul:tree のテンプレート用で、SQLite は検索用
    • メモリ上に作成した SQLite データベースを xul:tree のデータソースに
      設定するには nsIXULTemplateQueryProcessor を実装すれば
      良いが JavaScript で実装するとやっぱり重い。
      (参考:Implement a custom XUL query processor
    • MDN で解らないなら、ソースを読むべし
      (参考:nsXULTemplateQueryProcessorStorage.cpp
    • nsIXULTemplateQueryProcessor のサンプル拡張を作ってみた
  • Task.jsm と Promise.jsm の使い方
  • グローバル変数へのアクセスは遅いとか