マニュアル目次 > まず読む

このプラグインの仕組み

最初に読んでください。ここが分かっていないと、各画面の意味がつかめません。

何をするプラグインか

baserCMS は、ページが表示されるたびにPHPがデータベースを読んでHTMLを組み立てています。このプラグインは、その組み立て結果をあらかじめHTMLファイルとして保存し、公開用のサーバーへ置くものです。

公開されるサイトはただのHTMLファイルの集まりになるので、表示が速く、PHPやデータベースの障害・攻撃の影響を受けません。CMS本体を社内や別サーバーに隠したまま運用することもできます。

全体の流れ

CMSから公開先までの流れ baserCMSのページをHatStaticEngineがHTTPで取得し、書き出し先に保存し、公開先へ反映する流れの図です。 baserCMS(CMS側) 記事や固定ページを編集する場所 ① 自分のサイトをHTTPで読む HatStaticEngine 受け取ったHTMLをファイルに直す ② HTMLファイルとして保存 画像・CSS・JS 静的ファイル同期 書き出し先 作りかけのファイルが置かれる作業場 ③ 公開(コピー または rsync転送) 公開先 同じサーバーの別ディレクトリ/別サーバー サイトの閲覧者
閲覧者が見るのは一番下の「公開先」だけです。CMSには一切アクセスしません。

4つの場所を区別する

設定画面や各画面に出てくる言葉は、この4つのどこを指しているかを意識すると迷いません。

場所何が置かれるか
CMSCMS基本URL いま使っている baserCMS そのものです。ここでコンテンツを編集します。このプラグインは、ここへHTTPでアクセスして表示結果を受け取ります。
書き出し先一時生成先パス 生成したHTMLを一旦ためておく作業場です。公開ディレクトリの外に置きます。作りかけの状態が閲覧者に見えないようにするためです。
公開先公開先パス / rsync転送先 閲覧者が実際に見るファイルの置き場所です。書き出し先の内容を「公開」操作でここへ反映します。
公開サイトURL公開サイトURL 公開先をブラウザで見るときのURLです(例 https://www.example.com/)。HTMLの中に残ったCMSのURLを、このURLへ書き換えるのに使います。

ボタンを押しても、その場では作られない

このプラグインでいちばん誤解されやすいところです。管理画面のボタンやコンテンツの保存でやっているのは、「あとで作るページの一覧に積む」ことだけです。実際にHTMLを作るのは、サーバーで定期的に動く cron です。

こうしているのは、1000ページのサイトで「全ページ再生成」を押したときに、その場で1000ページ分を処理しようとすると必ず途中でタイムアウトするからです。少しずつ分けて処理することで、ページ数が増えても止まらないようにしています。

キューとcronの関係 ボタン操作はキューに積むだけで、実際の生成はcronが行うことを示した図です。 きっかけ 管理画面のボタン 記事の保存 / コマンド キュー(ジョブ) 作るページの待ち行列に 並べるだけ ここまでは一瞬で終わる。まだHTMLは1枚もできていない cron が数分おきに実行 処理(work) 1回に決めた件数だけ 取り出して生成する 書き出し先 HTMLができる
すぐに結果を見たいときは、ダッシュボードの「今すぐキュー処理」を押すと、cronを待たずにその場で処理できます(件数の上限は設定どおり)。
cron を設定していないと、いつまで経ってもページは作られません。 導入時に必ず設定してください。手順は cronの設定 にあります。

全ページ再生成と差分生成

ページを作り直すきっかけは2種類あります。どちらか一方だけでも運用できます。

種類いつ動くか対象
全ページ再生成 夜間の決まった時刻(設定)、または管理画面のボタン サイトのすべてのページ。前回あったのに今回現れなかったページは、公開先からも削除されます。
差分生成 記事や固定ページを保存・削除した直後 差分生成する条件」で指定したページだけ。数ページで済むので数十秒で反映されます。
まずは全ページ再生成だけで始めるのがおすすめです。 夜間の全ページ再生成を有効にしておけば、翌朝には必ず最新になります。「保存したらすぐ反映したい」となってから差分生成を設定してください。

静的化できないもの

公開先にはPHPがありません(別サーバーへ配信する場合は特に)。そのため、アクセスのたびに処理が要るページは静的化できません。

これらは「URL除外パターン」で対象から外し、必要なら別の方法を用意します。既定値でもフォームの送信先や管理画面は除外済みです。

できないものどうするか
メールフォーム Googleフォームなど外部のフォームへ差し替えます。リンク先だけを差し替える「URLの読み替え」が使えます。
サイト内検索 検索結果は入力によって変わるため作れません。外部の検索サービスを埋め込むか、検索機能を外します。
会員専用ページ ログイン状態を判定できません。静的化の対象から外し、CMS側で運用してください。
閲覧者ごとに変わる表示 カートの中身、「〇〇さん、こんにちは」などは全員に同じHTMLが配られます。JavaScriptで表示する形に変えてください。