プラグイン/html_cache.inc.php - K's Note
  プラグイン > html_cache.inc.php  

HTML Cache(ページを一時的に保存して少しだけ処理を軽量化するプラグイン)

Tag: 自作プラグイン プラグイン 軽量化 軽量化プラグイン 高速化 キャッシュ ページ保存 html PukiWiki

目次

概要

HTMLへの変換後のページをキャッシュ化(保存)してキャッシュ化したhtmlファイルを読み込むプラグインです。
編集後にキャッシュ化されます。
html_cache.inc.phpPLUGIN_HTML_CACHE_PLUGIN_FALSEで指定されたプラグインがページ内で使用されていたらキャッシュ化されないようにできます。
「#comment」が使われていたらキャッシュ化されないようにできます。
標準で存在しないページのリンクが存在していたらキャッシュ化されません。
また、ページを指定したり、ページ内で「#html_cache(false)」を利用してキャッシュ化されないようにできます。
本当はbodycacheというプラグインを使いたかったのですが、ダウンロードリンクが消失してたのでつくりました。

設定

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
//標準
define("PLUGIN_HTML_CACHE_PLUGIN_FALSE","article,comment,include,memo,recent,versionlist,vote");
define("PLUGIN_HTML_CACHE_INLINE_PLUGIN_FALSE","");
define("PLUGIN_HTML_CACHE_FALSE_PAGES","");
define("PLUGIN_HTML_CACHE_FALSE_AUTO_LINK",true);
define("WIKI_DIR","wiki/");
 
//設定の例
define("PLUGIN_HTML_CACHE_PLUGIN_FALSE","article,comment,commentplus,ls,ls2,mlcomment,include,memo,memo2,pluglist,recent,taglist,tvote,versionlist,vote");
define("PLUGIN_HTML_CACHE_INLINE_PLUGIN_FALSE","");
define("PLUGIN_HTML_CACHE_FALSE_PAGES","サンプルページ,サンプルページ2");
define("PLUGIN_HTML_CACHE_FALSE_AUTO_LINK",true);
define("WIKI_DIR","wiki/"); 

解説

  • PLUGIN_HTML_CACHE_PLUGIN_FALSE
    指定しているプラグイン(#<プラグイン名>)が利用されていたらキャッシュ化しないようにする設定(「,」で区切る)
    ※書き換え系のプラグインは特に指定した方がいい。
  • PLUGIN_HTML_CACHE_INLINE_PLUGIN_FALSE
    指定しているインラインプラグイン(&<プラグイン名>;)が利用されていたらキャッシュ化されないようにする設定(「,」で区切る)
    ※書き換え系のプラグインは特に指定した方がいい。
  • PLUGIN_HTML_CACHE_FALSE_PAGES
    キャッシュ化しないページを設定(「,」で区切る)
  • PLUGIN_HTML_CACHE_FALSE_AUTO_LINK
    存在しないリンクがあればキャッシュ化しないようにする設定(trueかfalse)
  • WIKI_DIR
    特に変更する必要はないが、ページの入っているディレクトリを設定

仕様

  • 編集して「ページの更新」をするとキャッシュが保存される。
    正確には関数plugin_html_cache_page_cache($page ページ名)が呼び出されてキャッシュが保存される。
  • 「http(s)://<ドメイン>/?cmd=html_cache&page=<ページ名>」でページをキャッシュできる。
    基本的にはあまり利用しない。ページに不具合がある場合は利用するといいかもしれない。

ダウンロード

セットアップ

1. 上記の見出し「ダウンロード」からhtml_cache.inc.phpをダウンロードし、ディレクトリ(フォルダ)「<ルート>/plugin/」へ入れてください。
2. 「<ルート>/lib/pukiwiki.php」を開き、以下のように編集する

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
    //----html_cache----
    if (exist_plugin('html_cache')){
        $cache_html_path = CACHE_DIR."html_cache/".strtoupper(bin2hex($base)).".html";
        if (file_exists($cache_html_path)){
            $cache_html = file_get_contents($cache_html_path);
            $body = $cache_html;//."<br /><span style=\"font-size:5px;\">(Cached Page)</span>";
        }else{
            $body = convert_html(get_source($base));
        }
    }else{
        $body = convert_html(get_source($base));
    }
    //---- 

上記のコードを下記のように編集する。(103行あたり)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
    $vars['cmd']  = 'read';
    $vars['page'] = & $base;
 
    prepare_display_materials();
-    $body = convert_html(get_source($base));
+    //----html_cache----
+    if (exist_plugin('html_cache')){
+        $cache_html_path = CACHE_DIR."html_cache/".strtoupper(bin2hex($base)).".html";
+        if (file_exists($cache_html_path)){
+            $cache_html = file_get_contents($cache_html_path);
+            $body = $cache_html;//."<br /><span style=\"font-size:5px;\">(Cached Page)</span>";
+        }else{
+            $body = convert_html(get_source($base));
+        }
+    }else{
+        $body = convert_html(get_source($base));
+    }
+    //----
} 
  • 「;//」を「."<br /><span style=\"font-size:5px;\">(Cached Page)</span>";」にするとキャッシュされているか分かりやすくなります。

3. 「<ルート>/plugin/edit.inc.php」を開き、以下のように編集する

  1
  2
  3
  4
  5
  6
    //----html_cache----
    if (file_exists(PLUGIN_DIR.'html_cache.inc.php')){
        include PLUGIN_DIR.'html_cache.inc.php';
        plugin_html_cache_page_cache($page);
    }
    //---- 

上記のコードを下記のように編集する。(259行あたり(標準プラグイン(edit.inc.php,pukiedit.inc.php(ViewEdit用標準プラグイン))では259行あたり。ViewEdit(viewedit.inc.php(プラグイン版),edit.inc.php(書き換え版))では263行あたり。EasyEdit(easyedit.inc.php)では461行あたり。))

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
    page_write($page, $postdata, $notimeupdate != 0 && $notimestamp);
+    //----html_cache----
+    if (file_exists(PLUGIN_DIR.'html_cache.inc.php')){
+        include PLUGIN_DIR.'html_cache.inc.php';
+        plugin_html_cache_page_cache($page);
+    }
+   //----
    pkwk_headers_sent();
    header('Location: ' . get_page_uri($page, PKWK_URI_ROOT));
    exit; 

フォーマット

#html_cache(false)
  • キャッシュしないようにする。
#html_cache(true)
  • キャッシュするようにする。(設定は優先されない。)

関連

利用可能バージョン

できた

選択肢 投票
1.5.3 0  
1.5.2 0  
1.5.1 0  
1.5.0 0  
1.4.x 0  
1.3.x 0  
PHP7.x 0  
PHP5.x 0  

できなかった

選択肢 投票
1.5.3 0  
1.5.2 0  
1.5.1 0  
1.5.0 0  
1.4.x 0  
1.3.x 0  
PHP7.x 0  
PHP5.x 0  

その他バージョン


コメント

コメントはありません。 コメント/プラグイン/html_cache.inc.php

お名前:

Last-modified: 2022-09-05 (月) 04:00:54