1. トップ
  2. 使い方
  3. その他の機能
  4. キャッシュ機能

cWikiでは構文変換処理によるサーバ負荷の低減および応答速度の向上のためキャッシュ機構を採用しています。

キャッシュとは一度処理したものをためておいて使いまわすことで次回以降の処理を省く仕組みです。キャッシュという考え方や基本的な作り方自体には画期的な面はほとんどありませんが、正面からまともに作りこもうとすると非常に面倒な代物でもあります。


キャッシュの有効化・無効化†部分編集

cWikiでは基本的に全てのwikiでキャッシュを有効化しています。
必要があれば一時的なキャッシュ無効化の設定変更の依頼も受け付けますが、通常はその必要はほとんどないでしょう。


キャッシュの生成†部分編集

キャッシュは、ページを表示したときキャッシュが存在しない場合に生成されます。
たいていはページの編集やキャッシュクリア操作を行うと同時に対象のページを表示するため、このタイミングでキャッシュが生成されます。


キャッシュの破棄†部分編集

新規作成・更新・削除を問わずページを編集したとき、キャッシュクリア操作を行ったとき、あるいはサーバ側の自動更新処理によって、キャッシュが破棄されます。
キャッシュ破棄の対象となるのは、前者2つについては対象のページのみ、後者については後述の更新リスト中のいずれかの単語を含むページ全てです。


キャッシュの特徴と欠点†部分編集

一度処理した内容を保持して使いまわすということは、その後ページの内容を書き換えるべき何かが起きてもキャッシュが残っている限りは内容が変わってくれない、すなわち古い情報が残り続けるということでもあります。
書き換えるべき何かとは、たとえばリンク構文でリンク先として指定していたページが削除されたとき、たとえば&file( );プラグインで呼び出していたファイルが消去されたとき、たとえばAutoAliasNameが更新され追加された別名を対象ページが含んでいるとき、などです。

このようなとき、他のページが更新されたからといって既存のページ全てを見て回って問題ありそうならちょこっと編集して……というのは非効率です。
このため、キャッシュを新鮮な状態に保てるように、以下の仕組みが用意されています。


キャッシュクリア操作†部分編集

右上のドロップダウンメニューの「その他」項目の中に「このページのキャッシュを削除」というメニューがあります。
このメニューを選択することで、ページの編集なしに、その場で今見ているページのキャッシュを削除することができます。
下記のように &cmdlink( );プラグインを用いて特定のページのキャッシュクリア用のリンクを作っておくことも可能です。

&cmdlink( clearcache, p, 「ページ名」 ){ 「ページ名」のキャッシュを削除するにはこちらをクリック };

キャッシュクリア操作は即座に行われます。ページ編集等と違い履歴は記録されません。


実行時プラグイン†部分編集

たとえばコメント機能など、キャッシュとして保持されては困る機能もいくつか存在します。
そのような機能は 実行時プラグイン としての機能を持ち、対象の機能の部分についてだけは処理状況をキャッシュに保存せず、ページを表示するたびに処理を行い新鮮な結果を得られるようになっています。
どのプラグインが 実行時プラグイン なのかは、tag:実行時プラグイン 一覧で確認できます。


自動更新処理と更新リスト†部分編集

上記2つの仕組みが存在していても、それだけで全てに対処できるかといえば否です。
そのため、ページ編集などのたびに更新すべきページの条件を1つ1つ記録していき、一定のタイミングで自動的にキャッシュを破棄する仕組みがあります。

通常のページ編集時には編集したページの名前が、
ファイルアップロードおよびファイル削除を行った時にはそのファイルの名前が、
AutoAliasNameなどの編集時には増減したAutoAliasNameの別名やAutoGlossaryの言葉が、
更新リストに逐一記録されます。

初期設定では1日1回、深夜……というより早朝の5時過ぎにサーバは自動的にこのリストを確認し、このリストに含まれる名前等を1つでも内容に含むページについてキャッシュを破棄します*0
最長でも1日待てばそれぞれのページは新鮮な状態になるということです。



  • *0 利用状況と負荷の程がわからないため現時点ではコメントはこの自動更新処理の対象外となっていますが、将来変更されるかもしれません

このページのタグ一覧 タグ編集 タグ検索
登録済みタグはありません