共通書式
luaディレクティブは以下の形式で記述します。
cmd
実行するluaディレクティブ名を指定します。
型
スカラー(文字列)
値
ディレクティブ名 | ディレクティブ名を指定します。 省略できません。 |
例
lua:
body_filter:
- cmd: wp shorten url
args
実行するluaディレクティブのオプションを指定します。
型
シーケンス(マッピング) または マッピング
値
オプションは指定したluaディレクティブにより異なります。各luaディレクティブを参照してください。
例
lua:
body_filter:
- cmd: lazy load
args:
- element:img
skip: 5
apply
実行するluaディレクティブを適用するパス、または、条件を指定します。
複数指定した場合はOR条件になります。
型
マッピング
apply > path
実行するluaディレクティブを適用するパスを指定します。
型
シーケンス(文字列)
値
パス | luaディレクティブを適用するパスを正規表現で指定します。 デフォルトは、PST設定ファイルのglobal_excludeに指定したパス以外の全てのリソースに対して有効となります。 |
例
lua:
body_filter:
- cmd: wp shorten url
apply:
path:
- ^/archives/
apply > if
実行するluaディレクティブを適用する条件を指定します。
指定されていない場合、PST設定ファイルのglobal_excludeに指定したパス以外の全てのリソースに対して有効となります。
型
シーケンス(文字列)
値
is_kusanagi_pc | 条件にPCブラウザからのアクセスを指定します。 |
is_kusanagi_mobile | 条件にモバイルブラウザからのアクセスを指定します。 |
is_kusanagi_tablet | 条件にタブレットブラウザからのアクセスを指定します。 |
例
lua:
body_filter:
- cmd: wp shorten url
apply:
if:
- is_kusanagi_pc
exclude
実行するluaディレクティブの適用を除外するパス、または、条件を指定します。
複数指定した場合はOR条件になります。
型
マッピング
exclude > path
実行するluaディレクティブの適用を除外するパスを指定します。
型
シーケンス(文字列)
値
パス | luaディレクティブの適用を除外するパスを指定します。 デフォルトは、PST設定ファイルのglobal_excludeに指定したパス以外の全てのリソースに対して有効となります。 |
例
lua:
body_filter:
- cmd: wp shorten url
exclude:
path:
- /wp-content/plugins
exclude > if
実行するluaディレクティブの適用を除外する条件を指定します。
指定されていない場合、PST設定ファイルのglobal_excludeに指定したパス以外の全てのリソースに対して有効となります。
型
シーケンス(文字列)
値
is_kusanagi_pc | 除外する条件にPCブラウザからのアクセスを指定します。 |
is_kusanagi_mobile | 除外する条件にモバイルブラウザからのアクセスを指定します。 |
is_kusanagi_tablet | 除外する条件にタブレットブラウザからのアクセスを指定します。 |
例
lua:
body_filter:
- cmd: wp shorten url
exclude:
if:
- is_kusanagi_pc
lua > header_filter ディレクティブ
add
HTTPレスポンスヘッダーに追加の出力を行います。
args
型
シーケンス(文字列)
値
キー: 値 | HTTPヘッダーのキーと値を「:」で区切った文字列で指定します。複数のHTTPヘッダを指定できます。 |
例
lua:
header_filter:
- cmd: add
args:
- 'Page-Speed-Technology: on'
remove
HTTPレスポンスヘッダーから削除を行います。
args
型
シーケンス(文字列)
値
キー: 値 | HTTPヘッダーのキーと値を「:」で区切った文字列で指定します。HTTPヘッダと値が完全一致したものが削除されます。値を省略した場合は、値に関わらず指定したHTTPヘッダが削除されます。複数のHTTPヘッダを記述することができます。 |
例
lua:
header_filter:
- cmd: remove
args:
- 'link: ; rel="https://api.w.org/"'
- 'x-pingback'
replace
HTTPレスポンスヘッダーの置き換えを行います。
args
型
シーケンス(マッピング)
args > search
型
スカラー(文字列)
値
キー: 値 | HTTPヘッダーのキーと値を「:」で区切った文字列で指定します。置換元のHTTPヘッダを指定します。値はシングルクォート(')で囲んでください。複数のHTTPヘッダを記述することができます。 省略できません。 |
args > replacement
型
スカラー(文字列)
値
キー: 値 | HTTPヘッダーのキーと値を「:」で区切った文字列で指定します。置換先のHTTPヘッダを指定します。値はシングルクォート(')で囲んでください。複数のHTTPヘッダを記述することができます。 省略できません。 |
例
lua:
header_filter:
- cmd: replace
args:
- search: 'X-MyHeader: original'
replacement: 'X-MyHeader: replaced'
- search: 'X-old-header: original'
replacement: 'X-new-header: replaced'
server push
指定したリソースをHTTP2 Pushで送信し、コンテンツの表示にかかる時間を短縮します。通常、コンテンツを表示するために必要なリソースは、HTTPレスポンスボディを取得してその内容をパースするまでは分かりません。server pushにリソースを指定することで、HTTPレスポンスボディと同時にリソースを受信することができます。
args
型
シーケンス(マッピング)
args > href
型
スカラー(文字列)
値
URL | link要素のhref属性に指定するURLを文字列で指定します。 省略できません。 |
args > media
型
スカラー(文字列)
値
メディアクエリー | link要素のmedia属性に指定するメディアクエリーを文字列で指定します。 |
例
lua:
header_filter:
- cmd: server push
args:
- href: /wp-content/mu-plugins/pst/font/genericons-regular-webfont.ttf
add link
HTTPレスポンスヘッダーのLinkフィールドに追加の出力を行います。
args
型
シーケンス(マッピング)
args > rel
型
スカラー(文字列)
値
リンク種別 | link要素のrel属性に指定するリンク種別を文字列で指定します。 省略できません。 |
args > href
型
スカラー(文字列)
値
URL | link要素のhref属性に指定するURLを文字列で指定します。 省略できません。 |
args > as
型
スカラー(文字列)
値
リソース種別 | link要素のas属性に指定するリソース種別を文字列で指定します。 |
args > type
型
スカラー(文字列)
値
コンテンツの種別 | link要素のtype属性に指定するコンテンツの種別を文字列で指定します。 |
args > media
型
スカラー(文字列)
値
メディアクエリー | link要素のmedia属性に指定するメディアクエリーを文字列で指定します。 |
args > crossorigin
型
スカラー(ブール)
値
CORS(オリジン間リソース共有) の有効/無効を設定します。デフォルトは無効です。
true | CORS(オリジン間リソース共有)を有効にします。 |
false | CORS(オリジン間リソース共有)を無効にします。 |
例
lua:
header_filter:
- cmd: add link
args:
- rel: preload
href: /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-italic-var.woff2
as: font
type: font/woff2
crossorigin: true
server push external css
engagement delayと組み合わせて使用します。engagement delayでtype: css/cssxかつmethod: serverpushを指定したスタイルシートをHTTP/2 server pushします。
args
なし
例
lua:
header_filter:
- cmd: server push external css
set cookie for cdn
CDNよりコンテンツを配信している際、CDN経由でも最適化されたコンテンツを出し分けられるように、Cookieを設定します。PSTによる最適化をCDNと組み合わせて行う際に指定してください。
args
型
マッピング
args > domain
型
スカラー(文字列)
値
URL | オリジナルのドメインを指定します。 |
args > external_url
型
スカラー(文字列)
値
URL | オリジナルドメインのCookieを設定する、JavaScriptのURLを指定します。 省略できません。 |
args > ext
型
スカラー(文字列)
値
Cookie | Cookieに設定する値を指定します。 省略できません。 |
例
lua:
header_filter:
- cmd: set cookie for cdn
args:
domain: wexal.jp
external_url: https://www.prime-strategy.co.jp/test.js?test=test
wp remove header
WordPressがheadタグ内に出力するハンドルを抑制し、ブラウザがロードするコンテンツを減らすことで表示にかかる時間を短縮します。デフォルトでは、トラックバック許可の確認と以下のハンドルを抑制します。
ハンドル名 |
pings_open |
rest_output_link_header |
wp_shortlink_header |
args
型
シーケンス(マッピング)
args > func_to_remove
型
スカラー(文字列)
値
ハンドル | 追加で抑制したいtemplate_redirectフックのハンドルを指定します。 |
args > header
型
スカラー(文字列/ブール)
値
ヘッダ要素 | func_to_removeで指定した各ハンドルが出力するHTTPヘッダを指定します。デフォルト値は各ハンドルのHTTPヘッダです。また、falseを設定することで、抑制されることを防ぐ (removeされない) ことができます。 |
例
lua:
header_filter:
- cmd: wp remove header
args
- func_to_remove: pings_open
header: x-pingback
lua > body_filter ディレクティブ
set cookie for cdn
CDNよりコンテンツを配信している際、CDN経由でも最適化されたコンテンツを出し分けられるように、Cookieを設定します。PSTによる最適化をCDNと組み合わせて行う際に指定してください。
args
型
マッピング
args > external_url
型
スカラー(文字列)
値
URL | オリジナルドメインのCookieを設定する、JavaScriptのURLを指定します。 省略できません。 |
args > ext
型
スカラー(文字列)
値
cookie | Cookieに設定する値を指定します。 省略できません。 |
例
lua:
body_filter:
- cmd: set cookie for cdn
args:
external_url: https://www.prime-strategy.co.jp/test.js?test=test
preload
HTMLの <head> にpreloadを指定したlink要素を追加します。
args
型
シーケンス(マッピング)
args > href
型
スカラー(文字列)
値
URL | link要素のhref属性に指定するURLを文字列で指定します。 省略できません。 |
args > media
型
スカラー(文字列)
値
メディアクエリー | link要素のmedia属性に指定するメディアクエリーを文字列で指定します。 |
例
lua:
body_filter:
- cmd: preload
args:
- href: /wp-content/themes/twentytwenty/style.css
media: all
remove js
指定した外部スクリプトタグを削除し、ブラウザがロードするコンテンツを減らすことで表示にかかる時間を短縮します。
args
型
シーケンス(マッピング)
args > needle
型
スカラー(文字列)
値
検索文字列 | 削除したいスクリプトの検索文字列を指定します。正規表現を使用することもできます。 省略できません。 |
例
lua:
body_filter:
- cmd: remove js
args:
- needle: wp-embed
- needle: vk-all-in-one-expansion-unit/assets/js/all.min.js
remove inline js
指定したインラインスクリプトタグを削除し、ブラウザがロードするコンテンツを減らすことで表示にかかる時間を短縮します。
args
型
シーケンス(マッピング)
args > needle
型
スカラー(文字列)
値
検索文字列 | 削除したいインラインスクリプトの検索文字列を指定します。正規表現を使用することもできます。 省略できません。 |
例
lua:
body_filter:
- cmd: remove inline js
args:
- needle: function heateorSssLoadEvent(e)
remove link
主に外部スタイルシートの呼び出しに使用されるlinkタグを削除し、ブラウザがロードするコンテンツを減らすことで表示にかかる時間を短縮します。
args
型
シーケンス(マッピング)
args > needle
型
スカラー(文字列)
値
検索文字列 | 削除したいlinkタグの検索文字列を指定します。正規表現を使用することもできます。 省略できません。 |
例
lua:
body_filter:
- cmd: remove inline css
args
- needle: .heateor_sss_horizontal_sharing
remove inline css
指定したインラインスタイルシートタグを削除し、ブラウザがロードするコンテンツを減らすことで表示にかかる時間を短縮します。
args
型
シーケンス(マッピング)
args > needle
型
スカラー(文字列)
値
検索文字列 | 削除したいインラインスタイルシートの検索文字列を指定します。正規表現を使用することもできます。 省略できません。 |
例
lua:
body_filter:
- cmd: remove inline css
args
- needle: .heateor_sss_horizontal_sharing
remove meta
指定したmetaタグを削除し、ブラウザがロードするコンテンツを減らすことで、表示にかかる時間を短縮します。
args
型
シーケンス(マッピング)
args > needle
型
スカラー(文字列)
値
検索文字列 | 削除したいmetaタグの検索文字列を指定します。正規表現を使用することもできます。 省略できません。 |
例
lua:
body_filter:
- cmd: remove meta
args:
- needle: generator
insert comment
HTMLコンテンツにコメントの追加を行います。
args
型
シーケンス(マッピング)
args > comment
型
スカラー(文字列)
値
コメント | 追加するコメントを指定します。コメントはシングルクォート(')で囲んでください。 省略できません。 |
args > pos
型
スカラー(文字列)
値
追加する位置 | インラインスクリプトを追加する位置を指定します。</head>の前に置く場合は</head>、</body>の前に置く場合は</body>を指定します。デフォルトは</head>です。 |
例
lua:
body_filter:
- cmd: insert script
args:
- comment: '<!-- comment -->'
pos: </body>
insert script
インラインスクリプトの追加を行います。remove jsディレクティブなどによりハンドルを解除した上で、テンプレートを編集することなく必要最低限のスクリプトを再登録することができます。
args
型
シーケンス(マッピング)
args > script
型
スカラー(文字列)
値
スクリプト | 追加するインラインスクリプトを指定します。 スクリプトはシングルクォート(')で囲んでください。 省略できません。 |
args > pos
型
スカラー(文字列)
値
追加する位置 | インラインスクリプトを追加する位置を指定します。</head>の前に置く場合は</head>、</body>の前に置く場合は</body>を指定します。デフォルトは</head>です。 |
例
lua:
body_filter:
- cmd: insert script
args:
- script: '<script type="text/javascript">var vkExOpt = {"ajax_url":"https:\/\/www.wexal.jp\/wp-admin\/admin-ajax.php"};</script>'
pos: </body>
add css
スタイルシートの追加を行います。
args
型
シーケンス(マッピング)
args > handle
型
スカラー(文字列)
値
ハンドル名 | 追加するスタイルシートのハンドル名を指定します。linkタグのidプロパティに使用します。デフォルトはなしです。 |
args > src
型
スカラー(文字列)
値
スタイルシートのパス | スタイルシートファイルのパスを指定します。 省略できません。 |
args > media
型
スカラー(文字列)
値
メディアクエリー | スタイルシートを定義するメディアを指定します。デフォルトはallです。 |
args > inline
型
スカラー(ブール)
値
追加するスタイルシートをインライン形式として展開するかを指定します。 デフォルトはfalseです。
true | 追加するスタイルシートをインライン形式として展開します。 |
false | 追加するスタイルシートをインライン形式として展開しません。 |
args > ver
型
スカラー(ブール)
値
クエリーストリングの最後にバージョン番号を付加するかを指定します。 デフォルトはfalseです。
true | クエリーストリングの最後にバージョン番号を付加します。 |
false | クエリーストリングの最後にバージョン番号を付加しません。 |
args > pos
型
スカラー(文字列)
値
追加する位置 | インラインスクリプトを追加する位置を指定します。<head>の直後に置く場合は<head>、</head>の前に置く場合は</head>を指定します。デフォルトは</head>です。 |
例
lua:
body_filter:
- cmd: add css
args:
- handle: button
src: /_wp/so-widgets-bundle/widgets/button/css/style.css
pos: </head>
inline: true
add js
スクリプトの追加を行います。
args
型
シーケンス(マッピング)
args > sync
型
スカラー(文字列)
値
読み込み方法 | 追加するスクリプトの読み込み方法を指定します。追加するスクリプトを非同期で読み込み、非同期で実行する場合は、asyncを指定します。追加するスクリプトを非同期で読み込み、HTMLのパースを完了した後に同期で実行する場合は、deferを指定します。それ以外を指定した場合、または省略時は、同期読み込み、同期実行します。 |
args > src
型
スカラー(文字列)
値
スクリプトのパス | 追加するスクリプトのパスを指定します。 省略できません。 |
args > inline
型
スカラー(ブール)
値
追加するスクリプトをインラインスクリプトとして展開するかを指定します。 デフォルトはfalseです。
true | 追加するスクリプトをインラインスクリプトとして展開します。 |
false | 追加するスクリプトをインラインスクリプトとして展開しません。 |
args > ver
型
スカラー(ブール)
値
クエリーストリングの最後にバージョン番号を付加するかを指定します。 デフォルトはfalseです。
true | クエリーストリングの最後にバージョン番号を付加します。 |
false | クエリーストリングの最後にバージョン番号を付加しません。 |
args > pos
型
スカラー(文字列)
値
追加する位置 | インラインスクリプトを追加する位置を指定します。<head>の直後に置く場合は<head>、</head>の前に置く場合は</head>を指定します。デフォルトは</head>です。 |
例
lua:
body_filter:
- cmd: add js
args:
- sync: defer
src: /wp-content/mu-plugins/pst/js/example.js
pos: </head>
inline: true
defer external js
外部スクリプトの実行をHTTPレスポンスボディのHTMLパース完了後まで遅延させることで、スクリプト実行によるコンテンツ表示にかかる時間を短縮できます。コンテンツはHTMLパースが完了 (DOMContentLoaded) し、スタイルシートや画像などの読み込みが完了 (load) すると表示されます。一般的に、スクリプトはHTMLパースで見付かると同時に実行され、スクリプトの実行が完了するまでHTMLパースは再開されません。このディレクティブを指定することで、先にHTMLパースを完了させ、外部スクリプトの実行とスタイルシートや画像の読み込みを平行して行うことができます。
args
型
マッピング
args > apply_script
型
スカラー(文字列)
値
スクリプトのパス | 適用するスクリプトのパスを指定します。正規表現を使用することもできます。デフォルトは . です。 |
args > exclude_script
型
スカラー(文字列)
値
スクリプトのパス | 適用外にするスクリプトのパスを指定します。正規表現を使用することもできます。デフォルトは false です。 |
例
lua:
body_filter:
- cmd: defer external js
args:
apply_script: js
replace
Webサーバからクライアントへ送信するレスポンスボディに対して、文字列置換を行います。
args
型
シーケンス(マッピング)
args > search
型
スカラー(文字列)
値
置換元文字列 | 置換元文字列を指定します。 |
args > replacement
型
スカラー(文字列)
値
置換先文字列 | 置換先の文字列を指定します。 |
args > limit
型
スカラー(数字)
値
置換回数 | 置換回数を指定します。省略した場合、マッチした全ての置換元文字列を置換先文字列で置換します。デフォルトは -1 で、マッチする文字列を全て置き換えます。 |
例
lua:
body_filter:
- cmd: replace
args:
- search: WordPress
replacement: PressWord
limit: 1
- search: Old Company Name
replacement: New Company Name
replace anything
Webサーバからクライアントへ送信するレスポンスボディに対して、正規表現による文字列置換を行います。置換先文字列には後方参照($1、$2など)を含めることができます。
args
型
シーケンス(マッピング)
args > pattern
型
スカラー(文字列)
値
正規表現 | 置換元の文字列の正規表現を指定します。 |
args > replacement
型
スカラー(文字列)
値
置換先文字列 | 置換先の文字列を指定します。後方参照($1、$2など)を含めることができます。 |
args > limit
型
スカラー(数字)
値
置換回数 | 置換回数を指定します。省略した場合、マッチした全ての置換元文字列を置換先文字列で置換します。デフォルトは -1 で、マッチする文字列を全て置き換えます。 |
args > modifier
型
スカラー(文字列)
値
PCRE | PCRE(Perl互換正規表現)のパターン修飾子を指定します。デフォルトはなしです。 |
例
lua:
body_filter:
- cmd: replace anything
args:
- pattern: <(/?[^<>\s]+)(\s[^<>/]+)?(\s/)?>
replacement: <$1$2$3>
limit: 1
lazy youtube
コンテンツに埋め込んだYouTube動画のスクリプトを遅延実行させることで、コンテンツ表示にかかる時間を短縮できます。遅延実行された埋め込みYouTube動画はコンテンツ内にサムネイルで表示され、サムネイルをクリックした際に動画がロードされるようになります。
args
型
マッピング
args > mobile
型
スカラー(文字列)
値
解像度(モバイル) | モバイル表示時のサムネイルの解像度を指定します。次の値を指定できます。 maxres: 1920x1080 sd: 640x480 hq: 480x360 mq: 320x180 '': 120x90 動画によっては全てのサイズのサムネイルがない場合があります。デフォルトはmaxresです。 |
args > pc
型
スカラー(文字列)
値
解像度(PC) | モバイル表示時のサムネイルの解像度を指定します。次の値を指定できます。 maxres: 1920x1080 sd: 640x480 hq: 480x360 mq: 320x180 '': 120x90 動画によっては全てのサイズのサムネイルがない場合があります。デフォルトはmaxresです。 |
例
lua:
body_filter:
- cmd: lazy youtube
args:
mobile: mq
pc: mq
proxy
外部リソース(img, css, js)をローカルでプロキシすることで、外部リソースに対しても PSTによる最適化を有効にします。
args
型
シーケンス(マッピング)
args > proxy-host
型
スカラー(文字列)
値
URL | プロキシしたいホスト名を指定します。 省略できません。 |
args > target
型
スカラー(配列)
値
配列 | プロキシしたい外部リソース種別とプロキシする個数を配列のセットで指定します。 |
args > target > element
型
スカラー(文字列)
値
リソース種別 | プロキシしたい外部リソースを指定します。img/css/js/bgを指定します。デフォルトは全ての種別が対象となります。 |
args > target > limit
型
スカラー(数字)
値
プロキシ個数 | elementで指定した要素について、先頭から n 個に対してプロキシします。-1を指定すると全てプロキシします。デフォルトは-1です。 |
例
lua:
body_filter:
- cmd: proxy
args:
- proxy-host: b.st-hatena.com
target:
- element: img
limit: 10
- element: css
limit: 0
- element: js
limit: 0
engagement delay
コンテンツに含まれるスクリプトのクロージャ、スクリプトの実行やスタイルシートのロードを、サイト訪問者のサイトへのエンゲージメントに応じで遅延させます。
エンゲージメントが低い (例えば初回訪問時) 間は遅延させることで、FCP (First Contentful Paint)の判定を高速にします。これにより「応答が速いサイトである」イメージを持たれ、ユーザーエクスペリエンスの向上が期待できます。
一方、エンゲージメントが高い (頻繁に訪問している、サイトを回遊している) 場合は遅延を徐々に減らし、即時実行に近づけます。応答速度に関するユーザーエクスペリエンスは減少しますが、サイト運営者が意図した通りの処理を提供することができます。
このディレクティブを使用することで、ユーザーが持つサイトへのエンゲージメントという軸で、ユーザーエクスペリエンスとサイト運営者が提供したいクオリティのバランスを取ることができます。
args
型
マッピング
args > score
型
スカラー(数字)
値
スコア目標値 | エンゲージメントスコアの目標値を指定します。デフォルトは250です。 エンゲージメントスコアは、ユーザーがサイトを表示するたびに約100点上昇します。また、ページ操作によっても点数が上昇します(後述のpscore参照)。ユーザーのエンゲージメントスコアがこの目標値に近付くにつれて、ロード開始までの待ち時間が短くなります。また、この値を越えると遅延実行せず、即時実行します。 |
args > pscore
型
スカラー(数字)
値
スコア目標値 | セッション単位のエンゲージメントスコアの目標を指定します。デフォルトは10です。 前述のエンゲージメントスコアの目標値(score)を越えていない場合でも、ページ操作によりセッション単位のエンゲージメントスコアの目標値を越えれば、待ち時間を無視してその時点でロードを開始します。PCではmouse hoverイベントやスクロールイベント、モバイルではタップやスクロールイベントなどにより加算されます。また、エンゲージメントスコアにもページ操作した分の点数が加算されます。 |
args > high
型
スカラー(文字列)
値
イベント名 | ユーザーのエンゲージメントが高い際の、ロードを開始するイベント名を指定します。デフォルトはDOMContentLoadedです。 |
args > low
型
スカラー(文字列)
値
イベント名 | ユーザーのエンゲージメントが低い際の、ロードを開始するイベント名を指定します。デフォルトはloadです。 指定したタイミングから、後述の待ち時間(delay)を経過するとロードを開始します。 |
args > delay
型
スカラー(数字)
値
待ち時間ミリ秒(ms) | ロード開始までの待ち時間の単位を指定します。デフォルトは1000です。 実際の待ち時間は、指定した待ち時間の単位と後述の割合(ratio)を掛けたものに対し、エンゲージメントスコアの目標値に対する現在のエンゲージメントスコアの割合をかけた値です。 |
args > ratio
型
スカラー(数字)
値
待ち時間を変更する割合 | モバイルで閲覧された際の、ロード開始までの待ち時間を変更する割合を指定します。デフォルトは4です。 ユーザーのエンゲージメントが一番低い時、delayが1000、ratioが4であれば、PC閲覧時は1秒、モバイル閲覧時は4秒が待ち時間となります。 |
args > max-age
型
スカラー(数字)
値
有効期限秒(s) | ユーザーのエンゲージメントスコアの有効期限を指定します。デフォルトは777600 (9日) です。 ユーザーが最後にサイトを訪問してからこの期間が経過するまでの間は、最後に記録したエンゲージメントスコアを使用します。それに従ってロード開始までの待ち時間を短縮します。有効期限を過ぎてからユーザーがサイトを再度訪問した際は、エンゲージメントスコアは初期値に戻ります。そのため、ロード開始までの待ち時間も初回訪問時と同一になります。 |
args > inline
型
スカラー(ブール)
値
engagement delayのスクリプトをインラインスクリプトとして展開するか、外部スクリプトとして読み込むかを指定します。デフォルトはfalseです。
true | インラインスクリプトとして展開します。 |
false | 外部スクリプトとして読み込みます。 |
args > debug
型
スカラー(ブール)
値
デバッグ出力の有無を指定します。有効にするとブラウザのコンソールにデバッグした内容を出力します。デフォルトはfalseです。
true | デバッグ出力を有効にします。 |
false | デバッグ出力を無効にします。 |
args > scripts
型
シーケンス(マッピング)
値
配列・マッピング | 遅延実行の対象にするクロージャやスクリプト、スタイルシートを指定します。各ノードの詳細は続く部分を参照してください。 scriptsが読み込まれる順序 以下のグループの順で、scriptsに記載された順にロードを開始します。 1. type に x が付いた、sync が async のもの 2. type に x が付いた、sync が sync のもの 3. type に x が付かない、sync が async のもの 4. type に x が付かない、sync が sync のもの |
args > scripts > name
型
スカラー(文字列)
値
リソース名 | クロージャ/スクリプト/スタイルシート名を指定します。このクロージャ/スクリプト/スタイルシート名は一意である必要があります。省略した場合は自動生成されます。 |
args > scripts > type
型
スカラー(文字列)
値
リソース種別 | リソース種類を指定します。 closure: クロージャの場合に指定します。patternの指定が必要です。 inline js: インラインスクリプトの場合に指定します。needleの指定が必要です。 css: 外部スタイルシートの場合に指定します。pathの指定が必要です。 js: 外部スクリプトの場合に指定します。pathの指定が必要です。 優先実行させたい場合は、それぞれの末尾にxを追加します。(例:jsx) |
args > scripts > needle
型
スカラー(文字列)
値
正規表現 | インラインスクリプトをマッチさせるための正規表現を指定します。 インラインスクリプトの場合 (type: inline js / inline jsx) では必須です。 |
args > scripts > before
型
スカラー(文字列)
値
スクリプト | 遅延させるinline jsのうち、変数や定数の定義などコンテンツ中でも必要で遅延できないスクリプトを切り出して指定します。デフォルト値はありません。 インラインスクリプトの場合 (type: inline js / inline jsx) に指定できます。 |
args > scripts > pattern
型
スカラー(文字列)
値
正規表現 | クロージャをマッチさせるための正規表現を指定します。 クロージャの場合 (type: closure / closurex) では必須です。 |
args > scripts > args
型
スカラー(文字列)
値
引数 | closureに渡す引数をカンマ区切りの文字列で指定します。デフォルト値はありません。 クロージャの場合 (type: closure / closurex) に指定できます。 |
args > script > cmd
型
シーケンス(マッピング)
値
関数 | closureと同時実行する関数を指定します。デフォルト値はありません。 クロージャの場合 (type: closure / closurex) に指定できます。 function: 関数名を指定します。(例 function: function_name1 ) args: 関数に渡す引数をカンマ区切りの文字列で指定します。 (例 args: 'arg1', 'arg2', 'arg3') |
args > scripts > path
型
スカラー(文字列)
値
URL | スタイルシート/スクリプトのパスを指定します。短縮URL (shorten url) をこのディレクティブより先に有効にしている場合は、それを加味したパスを記述する必要があります。 外部スタイルシート・スクリプトの場合 (type: css / cssx、 js / jsx) では必須です。 |
args > scripts > query
型
スカラー(文字列)
値
処理方法 | スタイルシート/スクリプトのパスにバージョン番号などのクエリーストリングが含まれる場合、それらの処理方法を指定します。自動的に処理する場合はautoを指定します。指定しない場合は、クエリーストリングを付加しません。デフォルトはautoです。 外部スタイルシート・スクリプトの場合 (type: css / cssx、 js / jsx) に指定できます。 |
args > scripts > original
型
スカラー(文字列)
値
URL | オリジナルのスタイルシートの絶対URLを指定します。スタイルシートにwebfontが含まれる場合に、オリジナルのスタイルシートの絶対URLを指定します。戦略AI「David」がwebfontを考慮したconfigを生成します。手動で設定することも可能です。 外部スタイルシート・スクリプトの場合 (type: css / cssx、 js / jsx) に指定できます。 |
args > scripts > method
型
スカラー(文字列)
値
URL | スタイルシートにwebfontが含まれる場合に指定します。戦略AI「David」がwebfontを考慮したconfigを生成します。手動で設定することも可能です。 外部スタイルシートの場合 (type: css / cssx) に指定できます。 |
args > script > inline
型
スカラー(ブール)
値
スクリプトタグのコンテンツの記述が必要/不必要を指定します。デフォルト値はfalseです。
外部スクリプトの場合 (js / jsx) に指定できます。
true | スクリプトタグのコンテンツを記述します。 |
false | スクリプトタグのコンテンツを記述しません。 |
args > scripts > attr
型
シーケンス(マッピング)
値
キー: 値 | スクリプトタグに指定した属性のうち、必要なキーと値を指定します。(例 key: id, value: my_id)デフォルトはありません。 外部スクリプトの場合 (js / jsx) に指定できます。 |
args > scripts > sync
型
スカラー(文字列)
値
実行方法 | クロージャ/インラインスクリプト/スタイルシート/スクリプトの実行方法を指定します。クロージャが外部スクリプトのjQueryに依存するなど、実行順番に依存関係がある場合、その逐次読み込むように指定できます。逐次実行する場合は一連のクロージャや外部スクリプトをsyncで指定し、順番に記述します。逐次実行が不要な場合はasyncを指定します。デフォルトはsyncです。 |
args > scripts > comment
型
スカラー(文字列)
値
コメント | コメントを記述します。 scriptにコメントを記述した場合は、その scriptは無効になります(コメント扱いになります)。 |
args > scripts > apply
scriptの遅延を適用する条件を指定します。luaディレクティブ共通のapplyと同じ形式で指定します。
args > scripts > exclude
scriptの遅延を適用から除外する条件を指定します。luaディレクティブ共通のexcludeと同じ形式で指定します。
例
lua:
body_filter:
- cmd: engagement delay
args:
score: 180
pscore: 10
high: body
low: load
delay: 1000
ratio: 5
max-age: 3600
inline: true
scripts:
- name: fa
type: css
path: /_wt/lightning/inc/font-awesome/versions/5.6.0/css/all.min.css
query: auto
- name: jq
type: jsx
path: /_wi/js/jquery/jquery.js
query: auto
sync: sync
- name: jm
type: jsx
path: /_wi/js/jquery/jquery-migrate.min.js
query: auto
sync: sync
- name: lm
type: js
path: /_wt/lightning/assets/js/lightning.min.js
query: auto
sync: async
lazy load
コンテンツに含まれる画像の読み込みを遅延します。 ※script要素内のimg/iframeはlazy loadを行いません。PST 3.1.5 より pircure/background-image はlazy loadの対象ではなくなりました。
args
型
シーケンス(マッピング)
args > element
型
スカラー(文字列)
値
タグ要素名 | lazy loadの有効/無効を設定したいタグを指定します。img/iframeを指定します。 PST 3.1.5 より pircure/style は指定できなくなりました。 |
args > disable
型
スカラー(ブール)
値
elementで指定した要素について、lazy loadの有効/無効を設定します。 デフォルトはfalseです。
true | lazy loadを無効にします。 |
false | lazy loadを有効にします。 |
args > skip
型
スカラー(文字列)
値
スキップ数 | elementで指定した要素について、先頭から n 個に対してlazy loadを無効にします。デフォルトは0(全て有効)です。 |
例
lua:
body_filter:
- cmd: lazy load
args:
- element: img
skip: 3
- element: iframe
disable: true
wp shorten url
WordPressの標準パスを短縮パスに置換し、URLを短縮します。WordPressはプロトコルから始まる絶対URLを出力しますが、これを短縮したパスに置換することでコンテンツサイズを削減し、コンテンツ表示にかかる時間を短縮します。URLの短縮はPST内部で動的に行うため、WordPressのテーマやプラグインなどの標準パスを書き換える必要はありません。以下のようにパスを置換して短縮します。
標準パス | 短縮パス |
---|---|
/wp-content/uploads | /_wu |
/wp-content/themes | /_wt |
/wp-content/plugins | /_wp |
/wp-includes | /_wi |
args
なし
例
lua:
body_filter:
- cmd: wp shorten url
wp remove emoji
WordPressの絵文字用スタイルシートとスクリプトの出力を抑制し、ブラウザがロードするコンテンツを減らすことで、表示にかかる時間を短縮します。デフォルトでは以下のアクションで出力される絵文字用スタイルシートとスクリプトを抑制します。
args
なし
例
lua:
body_filter:
- cmd: wp remove emoji
wp opt genericons
WordPressが読み込むアイコンフォント「Genericons」に対する最適化を行います。代替フォントを表示することで、フォントがブラウザにロードされるまでの間もコンテンツが表示されるようにします。
args
なし
例
lua:
body_filter:
- cmd: wp opt genericons
wp remove meta
WordPressが出力するmetaタグの出力を抑制し、ブラウザがロードするコンテンツ及びコンテンツサイズを減らすことで、表示にかかる時間を短縮します。デフォルトでは以下のハンドルを抑制します。
ハンドル名 |
feed_links |
feed_links_extra |
rsd_link |
wlwmanifest_link |
adjacent_posts_rel_link_wp_head |
rest_output_link_wp_head |
wp_oembed_add_discovery_links |
wp_oembed_add_host_js |
wp_shortlink_wp_head |
rel_canonical |
wp_generator |
args
型
シーケンス(マッピング)
args > func_to_remove
型
スカラー(文字列)
値
ハンドル | 追加で抑制したいハンドルを指定します。 |
args > meta
型
スカラー(文字列/ブール)
値
検索文字列 | func_to_removeで指定したハンドルが出力する、metaタグの検索文字列を指定します。falseを設定することで、抑制されることを防ぐ (removeされない) ことができます。 |
例
lua:
body_filter:
- cmd: wp remove meta
args
- func_to_remove: generator
meta: 'name="generator"'
wp remove wpcf7
WordPressのフォーム設置プラグイン「Contact Form 7」のスクリプトとスタイルシートの最適化を行います。WordPressでContact Form 7を有効にしている場合、フォームがないページにおいてもContact Form 7のスクリプトとスタイルシートがロードされます。このディレクティブを有効にすると、Contact Form 7のスクリプトとスタイルシートのロードを抑制し、ブラウザがロードするコンテンツを減らすことで表示にかかる時間を短縮します。フォームがあるページではこれらのスクリプトとスタイルシートは必要です。そのため、フォームがあるページはexcludeに指定して除外してください。
args
なし
例
lua:
body_filter:
- cmd: wp remove wpcf7
exclude:
if:
is_page: contactus
deduplicate script
全く同じスクリプトが複数読み込まれている場合、1つのみを残し、残りを除去します。(前バージョンのreduce script)
args
型
シーケンス(マッピング)
args > apply_script
型
スカラー(文字列)
値
スクリプトのパス | 適用するスクリプトのパスを指定します。正規表現を使用することもできます。デフォルトは . です。 省略できません。 |
args > exclude_script
型
スカラー(文字列)
値
スクリプトのパス | 適用外にするスクリプトのパスを指定します。正規表現を使用することもできます。デフォルトは false です。 |
例
lua:
body_filter:
- cmd: deduplicate script
args:
apply_script: jquery
lazy video
videoタグが読み込まれている場合、preload属性にnoneを指定して読み込みを遅らせます。
args
なし
例
lua:
body_filter:
- cmd: lazy video
normalize newlines
Windowsの改行コードCR+LFと、Macの改行コードCRを、LFに変換して改行コードを統一します。
args
なし
例
lua:
body_filter:
- cmd: normalize newlines
tidy
HTMLに必要なタグが欠損している場合、タグを補完します。 ※tidyディレクティブはバックエンドがphp7/php-fpmの場合のみ有効です。hhvmの場合は無効になります。
args
なし
例
lua:
body_filter:
- cmd: tidy
split inline css webfont
インラインスタイルシートをまとめて外部スタイルシート化します。webfontが含まれる場合は、split_css_webfontと同様に切り出して遅延します。 ※リソースの有効期限(Cache-Control: max-age)が設定されます。デフォルトは2hです。
args
なし
例
lua:
body_filter:
- cmd: split inline css webfont
normalize jquery
jQueryのスクリプトの指定を正規化します。(前バージョンのrepair jquery)
args
なし
例
lua:
body_filter:
- cmd: normalize jquery
secure target blank
rel 属性を持たない target="_blank" 指定の a タグに、rel="noopener noreferrer" を追加します。これにより、パフォーマンス改善と target="_blank" がもつ脆弱性への対策が行えます。
args
なし
例
lua:
body_filter:
- cmd: secure target blank
nanofy url
PSTの初期設定(init)で、nanoオプションを有効にした場合に使用します。基本的にユーザーが自分で使うことはありません。
args
なし
add link
外部リソースのリンクの追加を行います。
args
型
シーケンス(マッピング)
args > rel
型
スカラー(文字列)
値
リンク種別 | link要素のrel属性に指定するリンク種別を文字列で指定します。 省略できません。 |
args > id
型
スカラー(文字列)
値
要素ID | link要素のid属性に指定する要素IDを文字列で指定します。 |
args > href
型
スカラー(文字列)
値
URL | link要素のhref属性に指定するURLを文字列で指定します。 省略できません。 |
args > as
型
スカラー(文字列)
値
リソース種別 | link要素のas属性に指定するリソース種別を文字列で指定します。 |
args > imagesrcset
型
スカラー(文字列)
値
リソースの値 | link要素のimagesrcset属性に指定するリソースの値を文字列で指定します。 |
args > imagesizes
型
スカラー(文字列)
値
リソースのサイズ値 | link要素のimagesizes属性に指定するリソースのサイズ値を文字列で指定します。 |
args > type
型
スカラー(文字列)
値
コンテンツの種別 | link要素のtype属性に指定するコンテンツの種別を文字列で指定します。 |
args > media
型
スカラー(文字列)
値
メディアクエリー | link要素のmedia属性に指定するメディアクエリーを文字列で指定します。 |
args > crossorigin
型
スカラー(ブール)
値
CORS(オリジン間リソース共有) の有効/無効を指定します。デフォルトはfalseです。
true | CORS(オリジン間リソース共有)を有効にします。 |
false | CORS(オリジン間リソース共有)を無効にします。 |
args > pos
型
スカラー(文字列)
値
追加する位置 | インラインスクリプトを追加する位置を指定します。<head>の直後に置く場合は<head>、</head>の前に置く場合は</head>を指定します。デフォルトは</head>です。 |
例
lua:
body_filter:
- cmd: add link
args:
- rel: stylesheet
href: /_wp/so-widgets-bundle/widgets/button/css/style.css
pos: </head>
as: style
link dns prefetch
linkタグのdns-prefetch属性やpreconnect属性を有効にすることで、外部リソースのDNSの名前解決を最適化します。
args
型
シーケンス(マッピング)
args > rel
型
スカラー(文字列)
値
リンク種別 | link要素のrel属性に指定するリンク種別を文字列で指定します。 省略できません。 |
args > href
型
スカラー(文字列)
値
URL | link要素のhref属性に指定するURLを文字列で指定します。 省略できません。 |
args > pos
型
スカラー(文字列)
値
追加する位置 | インラインスクリプトを追加する位置を指定します。<head>の直後に置く場合は<head>、</head>の前に置く場合は</head>を指定します。デフォルトは</head>です。 |
例
lua:
body_filter:
- cmd: link dns prefetch
args:
- rel: dns prefetch
href: https://www.google.com/
pos: </head>
link lcp preload
LCP(Largest Contentful Paint)の画像のpreloadを有効にすることで、ファーストビューの表示を最適化します。
args
型
シーケンス(マッピング)
args > rel
型
スカラー(文字列)
値
リンク種別 | link要素のrel属性に指定するリンク種別を文字列で指定します。 省略できません。 |
args > href
型
スカラー(文字列)
値
URL | link要素のhref属性に指定するURLを文字列で指定します。 省略できません。 |
args > element
型
スカラー(文字列)
値
要素名 | link要素のelement属性に指定する要素名を文字列で指定します。 |
args > as
型
スカラー(文字列)
値
リソース種別 | link要素のas属性に指定するリソース種別を文字列で指定します。 |
args > imagesrcset
型
スカラー(文字列)
値
リソースの値 | link要素のimagesrcset属性に指定するリソースの値を文字列で指定します。 |
args > imagesizes
型
スカラー(文字列)
値
リソースのサイズ値 | link要素のimagesizes属性に指定するリソースのサイズ値を文字列で指定します。 |
args > pos
型
スカラー(文字列)
値
追加する位置 | インラインスクリプトを追加する位置を指定します。<head>の直後に置く場合は<head>、</head>の前に置く場合は</head>を指定します。デフォルトは</head>です。 |
例
lua:
body_filter:
- cmd: link lcp preload
args:
- rel: preload
element: img
href: https://www.wexal.jp/wp-content/uploads/2020/07/4a125c266368383c22b0e669d4b7894d.jpg
as: image
pos: </head>