PST設定ファイル(2.2.0)

保存場所

設定ファイルはKUSANAGIのプロファイルディレクトリ内の以下のパスに保存されています。
(a) ユーザがカスタマイズするユーザ設定ファイル
wexal/userdir/pst.config.yaml
(b) Page Speed Technologyが自動生成するプロファイル設定ファイル(本番用)
wexal/pst.config.yaml
(c) Page Speed Technologyが自動生成するプロファイル設定ファイル(ステージング用)
wexal/pst.stg.config.yaml
(d) Davidが作成する設定ファイル(pst ai configコマンド実行により作成)
wexal/David.config.yaml
(e) Davidが作成する設定ファイル(クラスターごとに設定を集約したもの。pst ai configコマンド実行により作成)
wexal/David.cluster.数字.config.yaml

カスタマイズは (a) ユーザ設定ファイル、(c) プロファイル設定ファイル(ステージング用)、(d) Davidが作成する設定ファイル、(e) Davidが作成する設定ファイル(クラスターごと)に対して行います。
カスタマイズした内容は、設定ファイルの記述に誤りがないか確認した上でPage Speed Technologyが (b) プロファイル設定ファイル(本番用)に反映します。

以降の説明では、特に記述のない限り設定ファイルは (a) ユーザがカスタマイズするユーザ設定ファイルを指します。

※注意事項※
プロファイル設定ファイルは直接編集しないでください。
記述に誤りがあった場合には、Webサイトが表示されないといった不具合が出ることがあります。

編集方法

pst edit_configコマンドによる編集

pst edit_configコマンドを実行し、エディタを起動して設定ファイルをカスタマイズします。
編集終了後に設定ファイルの記述に誤りがない場合は、設定ファイルよりプロファイル設定ファイル(ステージング用)を自動生成します。設定ファイルの内容は即座に反映されます。
設定ファイルの記述に誤りがあった場合は、プロファイル設定ファイルは自動生成されません。編集前の設定が継続して有効となります。
その後、pst makeコマンドを実行することにより、ステージング用設定ファイルが、本番用設定ファイルに反映されます。

pst edit --productionコマンドによる編集

pst edit --productionコマンドを実行した場合、ステージング用設定ファイルではなく、本番用設定ファイルに反映します。

別の方法で設定ファイルを編集して、pst make_configコマンドで反映

設定ファイルをダウンロードしてカスタマイズするなど、別の方法で設定ファイルを編集することもできます。
カスタマイズした設定ファイルをアップロードした場合は、pst make_configコマンドを実行します。
アップロードした設定ファイルの記述に誤りがない場合は、設定ファイルよりプロファイル設定ファイルを自動生成します。設定ファイルの内容は即座に反映されます。
設定ファイルの記述に誤りがあった場合は、プロファイル設定ファイルは自動生成されません。編集前の設定が継続して有効となります。

設定の書式

pst設定ファイルは YAML で書かれています。
YAMLの基本的なフォーマットは、YAMLの解説を参照してください。
YAML

本項ではPage Speed Technologyで記述するノードを解説します。

pst

Page Speed Technologyを制御します。

スカラー

on
有効にします

off
無効にします

pst: on

watch

Page Speed Technologyのプロファイル監視プロセスを制御します。

スカラー

on
サーバの起動時に自動的にプロファイル監視プロセスを起動します。
off
サーバの起動時に自動的にプロファイル監視プロセスを起動しません。

watch: on

tdir

Page Speed TechnologyのプロファイルディレクトリにあるDocumentRootを指定します。
pst initコマンドで自動的に設定されるので、基本的に変更は不要です。

スカラー

プロファイルディレクトリ /DocumentRoot

tdir: /home/kusanagi/profile/DocumentRoot

odir

Page Speed Technologyで参照するオリジナルコンテンツへのシンボリックリンク名を指定します。
pst initコマンドで自動的に設定されるので、基本的に変更は不要です。

スカラー

_wexal

odir: _wexal

timezone

Page Speed Technologyが参照するタイムゾーンを指定します。

スカラー

タイムゾーン 書式はtzselectコマンドで調べることができます。

timezone: Asia/Tokyo

protocol

Page Speed Technologyを適用するプロトコルを指定します。

スカラー

http
HTTPで適用します。

https
HTTPSで適用します。httpsを指定する際は、HTTPからHTTPSに対する301リダイレクトを合わせて設定してください。リダイレクトの設定は、kusanagi sslコマンドを参照してください。

protocol: http

conf

Page Speed Technologyの設定ファイルのエディタ・書式を指定します。

マッピング

ノード 説明
editor pst edito_configで使用するエディタを指定します。 スカラー vim:vimを使用します
コマンド:使用するエディタのコマンド名を指定します
format Page Speed Technologyの設定ファイルの書式を指定します。 スカラー yaml:YAMLを使用します。
ユーザ設定ファイルは wexal/userdir/pst.config.yaml になります。
php:phpを使用します。
ユーザ設定ファイルは wexal/userdir/make.config.php になります。

conf:
  editor: vim
  format: yaml

options

Page Speed Technologyの最適化で使用するディレクティブの種類を指定します。

シーケンス

lua

luaディレクティブを使用します。
指定されていない場合、luaノードに書かれたディレクティブは無効になります。

wp

wpディレクティブを使用します。
指定されていない場合、wpノードに書かれたディレクティブは無効になります。

apply_logged_in_user

ログイン中のユーザのセッションに対してPage Speed Technologyの最適化を有効にするか指定します。
指定されていない場合、ログイン中のユーザのセッションに対しては無効になります。

options:
- lua
- wp

global_exclude

Page Speed Technologyの最適化対象に含めないディレクトリを指定します。

シーケンス

パス
KUSANAGIのプロファイルのDocumentRoot (tdirノードの値) からの絶対パスで指定します。

global_exclude:
- /_wexal
- ~$
- /\.
- /wp-admin
- /wp-includes
- /wp-content/upgrade
- /wp-content/plugins

watch_additional_exclude

Page Speed Technologyのプロファイル監視プロセスで最適化対象に含めないディレクトリを指定します。
watch_additional_excludeに指定したディレクトリは、プロファイル監視プロセスの最適化対象にはなりませんが、スケジュール実行の対象にはなります。
逐次最適化の必要はなく、バッチ処理で最適化を行うディレクトリを指定してください。

シーケンス

パス
KUSANAGIのプロファイルのDocumentRoot (tdirノードの値) からの絶対パスで指定します。

watch_additional_exclude:
- /wp-content/uploads

lua

Page Speed Technologyの最適化で使用するluaディレクティブを指定します。
luaディレクティブはプロファイルで動作する全てのCMSに対して有効です。
luaディレクティブを参照してください。

マッピング

ノード 説明
1.4.7追加dynamic luaディレクティブを動的に生成します。WebサーバがNginxの場合のみ使用できます。 マッピング 以下の表を参照
fcache luaのオン・メモリキャッシュ(L-Cache)を制御します。L-CacheはWebサーバがNginxの場合、かつ、F-Cacheが有効な場合のみ使用できます。 マッピング 以下の表を参照
header_filter HTTPヘッダを出力するタイミングで実行するluaディレクティブを指定します。 シーケンス luaディレクティブを指定します。
body_filter HTTPレスポンスボディを出力するタイミングで実行するluaディレクティブを指定します。 シーケンス luaディレクティブを指定します。
1.4.7追加dynamicの値
ノード 説明
enable luaディレクティブの動的生成の有効・無効を指定します。 スカラー 0: 無効、
1: 有効、デフォルトは無効です。
exptime 動的に生成したluaディレクティブの有効期間を秒で指定します。 スカラー 有効期間(秒)、デフォルトは3600秒です。
config luaディレクティブを動的に生成する際のオプションを指定します。pst ai configコマンドのオプションを指定できます。 マッピング pst ai configコマンドのオプションを参照
fcacheの値
ノード 説明
enable L-Cacheの有効・無効を指定します。 スカラー 0: 無効、
1: 有効、デフォルトは無効です。
exptime L-Cacheの有効期間を秒で指定します。 スカラー 有効期間(秒)、デフォルトは60秒です。

lua:
  header_filter:
  - cmd: add
    args:
    - 'page-speed-technology: on'
  body_filter:
  - cmd: shorten url

worker

Page Speed Technologyのコンテンツ最適化の方法を設定します。
workerディレクティブはプロファイルで動作する全てのCMSに対して有効です。
workerディレクティブを参照してください。

※注意事項※
workerディレクティブの変更を反映するには、プロファイル監視プロセス (watch) と最適化実行プロセス (runner) の再起動が必要です。
pst watch restart と pst runner restart を実行してください。

マッピング

ノード 説明
img Page Speed Technologyの画像最適化の方法を設定します。
値を変更したときは、pst opt_imageコマンドで画像最適化を実行してください。
このキーが存在しない場合は、画像最適化をしません。
マッピング 以下の表を参照
css Page Speed Technologyのスタイルシート最適化の方法を設定します。
値を変更したときは、pst opt_cssコマンドでスタイルシート最適化を実行してください。
このキーが存在しない場合は、スタイルシート最適化をしません。
シーケンス workerディレクティブを指定します。
js Page Speed TechnologyのJavaScript最適化の方法を設定します。
このキーが存在しない場合は、JavaScript最適化をしません。
シーケンス workerディレクティブを指定します。
imgの値
ノード 説明
"" デフォルトの画像最適化の方法を指定します。 シーケンス workerディレクティブを指定します。
.webp WebPをサポートするブラウザでは、画像最適化としてWebP画像フォーマットを有効化します。
このキーが存在しない場合は、WebP画像フォーマットを使用しません。
シーケンス workerディレクティブを指定します。
.jp2 JPEG 2000をサポートするブラウザでは、画像最適化としてJPEG 2000画像フォーマットを有効化します。
このキーが存在しない場合は、JPEG 2000画像フォーマットを使用しません。
シーケンス workerディレクティブを指定します。
.jxr JPEG XRをサポートするブラウザでは、画像最適化としてJPEG XR画像フォーマットを有効化します。
このキーが存在しない場合は、JPEG XR画像フォーマットを使用しません。
シーケンス workerディレクティブを指定します。

worker:
  img:
    "": []
    .webp: []
    .jp2: []
    .jxr: []
  css: []
  js: []

wp

Page Speed Technologyの最適化で使用するwpディレクティブを指定します。
wpディレクティブはプロファイルで動作するCMSがWordPressのときに有効です。
wpディレクティブを参照してください。

マッピング

ノード 説明
wexal_init WordPressのinitアクションフックのタイミングで実行するwpディレクティブを指定します。
initアクションフックは、WordPressのロードが完了してHTTPヘッダを出力する直前に発生します。
通常はプラグインなどの初期化に使われます。
シーケンス wpディレクティブを指定します。
wexal_head WordPressのwp_headアクションフックのタイミングで実行するwpディレクティブを指定します。
wp_headアクションフックは、一般的にユーザテーマの<head></head>タグの前後で実行されるフックです。
シーケンス wpディレクティブを指定します。
wexal_footer WordPressのwp_footerアクションフックのタイミングで実行するwpディレクティブを指定します。
wp_footerアクションフックは、一般的にユーザテーマの</body>タグの前後で実行されるフックです。
シーケンス wpディレクティブを指定します。
wexal_enqueue_opt WordPressのwp_enqueue_scriptsアクションフックのタイミングで実行するwpディレクティブを指定します。
wp_enqueue_scriptsアクションフックは、プラグインやテーマのスクリプトとスタイルの処理を行うために一般的に使われるフックです。
シーケンス wpディレクティブを指定します。
wexal_flush WordPressの処理が完了し、phpからWebサーバへレスポンスボディを送信する直前のタイミングで実行するwpディレクティブを指定します。 シーケンス wpディレクティブを指定します。

wp:
  wexal_init: []
  wexal_head: []
  wexal_enqueue_opt: []
  wexal_footer: []
  wexal_flush:
  - cmd: server push external css

cron

Page Speed Technologyのスケジュール実行の方法を設定します。

マッピング

ノード 説明
job Page Speed Technologyでスケジュール実行する内容を記述します。 シーケンス 以下の表を参照
jobの値
ノード 説明
cmd 1.4.7.追加Page Speed Technologyでスケジュール実行するpstコマンドを指定します。
使用できるpstコマンドは以下です:opt opt_image opt_css opt_js uncss bcache fcache ai config
スカラー pstコマンドを指定します。
args Page Speed Technologyでスケジュール実行するpstコマンドのパラメタを指定します。 シーケンス pstコマンドのパラメタを指定します。
schedule Page Speed Technologyでスケジュール実行する条件を指定します。
crontabと同様の書式を使用できます。例えば、'*'は全てに一致します。'*/10'のように10毎という記述、'5-20'のような範囲指定、'1,3,5,7,11'のようなカンマ区切りによる複数指定も可能です。
シーケンス 1番目から順番に、分、時、日、月、曜日の各条件を指定します。

cron:
  job:
  - cmd: opt_image
    args:
    - '/'
    - '--force'
    schedule:
    - '0'
    - '3'
    - '*'
    - '*'
    - '0'

overrides

上部で指定したPSTの設定を上書きします。

マッピング

ノード 説明
name 識別子です。 スカラー 重複した場合、後で設定したものが有効になります。
device 設定を上書きしたいdeviceを指定します。 スカラー pcか、mobileの値を指定します。
path 設定を上書きしたいpathを指定します。 スカラー 正規表現が使えます。
if 設定を上書きしたい条件を指定します。 スカラー 1を指定すると、すべての場合に対して上書きを有効化します。
node ディレクティブの種類を指定します。 スカラー optionsの値と同じです。luaかwpを指定します。
patch 上部で指定したPSTの設定との差分を表示します。 シーケンス 差分を表示しているだけですので、patchの記述はPSTの設定に影響を与えません。なお、表記はjsonpatchに従います。
applied 上部で指定したPSTの設定を上書きする内容を指定します。 シーケンス 指定方法は、各ディレクティブの指定方法と同じです。
diff pst.david.config.yamlとの差分を表示します。 シーケンス 差分を表示しているだけですので、diffの記述はPSTの設定に影響を与えません。なお、表記はjsondiffに従います。また、clusterの設定ファイルで表示されます。

overrides:
- name: mobile pages
  device: mobile
  path: .
  if: 1
  node:
  - lua
  patch:
  - op: remove
    path: /lua/body_filter/2/args/scripts/24
  - op: replace
    path: /lua/body_filter/2/args/scripts/10/type
    value: 'js [ jQuery is found in body ]'
  - op: add
    path: /lua/body_filter/2/args/scripts/1/method
    value: webfont
  applied:
    lua:
      fcache:
        enable: 0
        exptime: 60
      header_filter:
      - cmd: wp remove header
      body_filter:
      - cmd: wp shorten url