• 追加された行はこの色です。
  • 削除された行はこの色です。
* キャッシュによる高速化
-ページ:     [[Develop/Modification1]]
-投稿者:     [[ぃぉぃぉ]]
-優先順位:   普通
-状態:       提案
-カテゴリー: その他
-投稿日:     2011-10-20 (木) 20:26:30
-バージョン: 

** メッセージ
**ページデータのキャッシュ化
ページ部分のhtmlデータは書き込み時に生成しちゃって高速化しよう。ただし、各プラグインに動的表示があるかどうかのフラグを持たせ、必要な場合は毎回htmlを生成するようにする。

***書込み時
キャッシュ削除

***表示時
#code(){{{
キャッシュファイルが存在していてhtml生成(convert_html)したい場合
  ->キャッシュファイル表示。(check_readableすること。get_sourceと同等の立場)
キャッシュファイルが存在しない場合
  ->convert_html()
    キャッシュ可能?(cache_enable?)
      ->YES ... キャッシュファイル作成
        NO ... キャッシュファイル削除
}}}
キャッシュ可能か、はページ毎に判断すること。でないとinclude等ではまる。

&_now;, &lastmod;などの表示時置換文字が有る場合にもキャッシュ不可能だな。判別処理追加しなきゃ。
***プラグイン毎の対応
-$vars['cache_enable']['plugin名']
--pluginを呼ぶ前にfalseにする。
---lib/plugin.phpのdo_plugin_convert()とdo_plugin_inline()
--plugin中でcache化してokであれば、trueにする。
---だめなpluginの例 ... ls2、pagetree、counter、include、related
--複数回呼ばれると、後勝ちになってしまう。プラグインの中で動作が変わりうるものについては、NGの場合、['plugin名']を['plugin名_nocache'](=FALSE)とする。
***キャッシュファイル
 HTCACHE_DIRに'../'.DATA_DIR.'htc/'でどうかな。
CACHE_DIRとしてcache/を使いたいところだけど、現状違う使われ方をしているし、とりあえず分けておこう。

 /data/htc/ページ名エンコード.html
これで、通常のデータと同じ文字数になるので、ファイル名長さ問題が軽減される。(従来より悪くならない)
 /data/wiki/ページ名エンコード.txt

ページ削除時に削除対象ファイルとすることも忘れずに。
***関数
-is_cached()
-page_cache()
-get_cache()
--ページ名のキャッシュを取得。キャッシュがあれば取得。無ければconvert_html()
-make_cache()
--$vars['cache_enable']をチェックして、全てtrueであればキャッシュファイル生成。convert_html後のテキストファイルを置く。一つでもNGならファイル削除。

----
- relatedとかincludeを多用したページとかで動作が軽くなるはず。 -- [[ぃぉぃぉ]] &new{2011-10-20 (木) 20:27:40};
- 大体実装は終わってるんだよな〜。いつ適用しようか。 -- [[ぃぉぃぉ]] &new{2011-11-02 (水) 17:30:30};

#comment



トップ 編集差分バックアップ添付複製名前変更リロード 新規一覧 単語検索 最終更新  ヘルプ  最終更新のRSS