
LDRで表示したエントリーと、訪問済みのエントリーをグレー表示するGreasemonkeyスクリプトです。
フィードを既読にするタイミングでフィード内の全エントリーのアドレスが保存されます。
以降同じエントリーは「以前表示したことがある」とわかるように文字と写真が薄くなって表示されます。
以前のバージョンが入っている場合は、「関連付けられた設定も削除」をチェックして一度アンインストールを行ったうえで、再度インストールを行ってください。
このブログには書いてませんが、今までに、何度か大きく更新をしていて、最初のバージョンよりずいぶん良くなってます。
エントリー表示テンプレートを書き換える方式になり、エントリーが多いときでも固まらなくなりました。
このバージョンではDOM Storageを使うことで、10日〜15日分のエントリーを保存できるようになり、ブラウザがクラッシュしても、その内容が失われなくなりました。
また、Tumblrのエントリーは特別に扱われ、エントリーに含まれる写真のアドレスの同一性もチェックしています。同じ写真が2度表示された場合、別の人のTumblrでも、それは重複として表示されます。
注意して欲しいことがあります。
スクリプト先頭にfilter_feedsという値があるのですが、ここで指定したフィードの重複エントリーは、全く表示されず、完全に無かったようになります。
デフォルトでTumblrやffffoundがこの設定に含まれており、エントリーが減って表示されます。
好みに合わせて、スクリプトの調整を行ってください。
また、フィルター対象のフィードは「過去記事を表示」が少しおかしくなる可能性があります。
この場合は当該スクリプトを無効にするなどして対処してください。
キャッシュ内容は、画面をアンロード/更新するタイミングで保存しています。
フィード既読のタイミングでこれをやると、時間が掛かりすぎるためです。
アンロード/更新をする前にブラウザがクラッシュした場合は、そのセッションで開いた内容は追加されていません。
内部では、何万件ものキーを持つオブジェクトを辞書のように使ってアドレスをチェックし、unevalとevalで保存と読み込みを行っています。
この処理に、どの程度時間が掛かるのかをPentium M 1.8GHz/メモリ 2GBのThinkPadを使って調べました。
| 件数 | 保存 | 読込 | サイズ |
| 50000 | 1300ms | 560ms | 736kb |
| 40000 | 900ms | 480ms | 589kb |
| 30000 | 680ms | 300ms | 442kb |
| 20000 | 373ms | 100ms | 294kb |
| 10000 | 100ms | 60ms | 147kb |
このことから、3万件(1日2000エントリー読む人の10日分の量ぐらい)のキャッシュを保持すると、ロードが0.3秒遅くなり、閉じるのが0.7秒遅くなるとわかりました。
僕は、開くのが10秒遅くなっても、最終的に元は取れると思っているので、どうでもいい量だなー。
デフォルトでは、10日分をキャッシュする設定になっています。
また、フィードの表示のときは訪問済みチェックを入れても40エントリーで10〜30ms程度の時間しか掛かってないようなので、ここの影響は少ないと思っています。