Blosxom エントリキャッシュプラグイン

last-updated at Oct 24, 2016 00:46, in /tech/blosxom

cacheentries

なんだかんだでこのBlosxomには1400超のエントリがあるわけで、これだけのファイルに毎度毎度stat()かけてるとさすがにちょっと重い。特に、試しにabで100並列でアクセスしてみたら悲惨なことになったので、ちょっとどうにかしてみるかと思い立った。

巷にはEntries Cache Pluginというのもあるんだけど、

  • &$entries()を完全に上書きする構造で追うの正直しんどい。
  • metaプラグイン対応とかいらない。
  • わざわざ頑張ってテキストファイルをパースする必要あるのかこれ。
  • キャッシュという割にはテンポラリな情報じゃなくないかこれ。
  • lockしてないからキャッシュファイル破壊する可能性ないかこれ。

とか考えると欲しいものとはちょっと違うことがわかったので、車輪の再発明感を覚えつつも自分で書くことにした。

本当に何も凝ったことはせず、デフォの&$entries()から返ってきた[ \%files, \%indexes, \%others ]をStorableでファイルにぶっ込んでおき、一定時間内はそのファイルから読むという、ただそれだけ。ロックもStorableのアドバイザリロック機構をそのまま使ってるので何も考えてない。

これだけなんだけど、チョー適当に計測した感じでは100並列アクセスの所要時間がざっくり半分に、1並列アクセスでもちょっとだけ速くなった。よしよし。

まあそんなアクセスないんだけどな、ここ。