Top > IT > CMS > Pukiwiki > ClearContentsxCash
Last-modified: Sun, 06 Oct 2013 17:26:49 JST
Counter:986 Today:1 Yesterday:1 Online:8
このエントリーをはてなブックマークに追加

lsx プラグインなどで firsthead によって取得されるデータの不具合を修正する

About

Sonots' PukiWiki プラグイン は Pukiwiki ユーザにとって必須と言えるプラグインです。そのうちに contentsx プラグインを利用して、ページのヘッダを取得する機能を持つプラグインがいくつかあります。例えば lsx プラグインはページに含まれるヘッダをリスト化したり、最初のヘッダ名を取得してリンクとして一覧させる機能があります。これについて、Pukiwikiの全体あるいは一部を操作した影響で、取得されるヘッダのデータに不具合を来す場合があります。例えば、ヘッダの文字列が正しく取得できないなどの不具合が起きます。lsx プラグインや popularx プラグインで firsthead オプションを指定するとき、取得される文字列が明らかにヘッダのものでないときは、この記事で解説する内容によって、不具合が解消される可能性があります。

問題の原因と解決

原因と技術詳細については公式で解説されています。

原因

contentsx プラグインはページをパース(≒解析)した結果をキャッシュすることによって処理の高速化を実現しています。Pukiwiki は通常の設定ではページが読み込まれる度に、ユーザが入力した Wiki テキストから HTML を出力します。ヘッダの検出のようにページに何が書かれているかチェックする機能の類は、毎回毎回実行しているとそれなりの負荷になるのです。そこで contentsx はヘッダのデータをキャッシュ(一時的に保存)することで少しでも負荷を下げる試みがなされています。

ところが何かしらの原因で保存したキャッシュに不具合が生じると、contentsx はキャッシュからデータを出力しますから、実際にはヘッダとして記述していない文字が contentsx によって出力されてしまうことがあります。そこでキャッシュを一度クリアします。

解決

Pukiwiki の cache ディレクトリに保存されている [ページ名.toc] なるファイルを全て削除するか(その後に対象のページを読み込むと更新される)、もしくはアクション型プラグイン [?cmd=contentsx] の実行によってキャッシュを更新することで問題は解決します。