web-dev-qa-db-ja.com

Wordpressのショートコードとパフォーマンス

ショートコードはパフォーマンスに影響しますか?このテクニックを使用している各プラグインはショートコードを探して投稿/ページコンテンツを解析しなければなりませんか?もしそうなら、できるだけ短いコードベースのプラグインを制限するのが良いでしょうか?

1
Riccardo

あなたはいくつかの観点からこれを見る必要があり、それからあなたはお互いに対してオッズを比較検討しなければなりません

一般に、ショートコードは、ショートコードハンドラによって解析および処理される必要があるため、遅くなります( ここではミリ秒単位で話しています )。

使用方法:投稿エディタの[my_shortcode]

一般的にショートコードは非常に便利で、通常は関数をハードコーディングして目的のテンプレートで呼び出すよりも少し遅くなる傾向があるという事実を上回ります。ショートコードは移植性があり( プラグインではであるべきなので )、テーマ間の使用に優れています。テンプレートで特別なことをするためにテンプレートを変更する必要はありません。ショートコードを投稿エディタのコンテンツメタボックスにドロップするだけで済みます。

利便性と使いやすさのために、ショートコードは間違いなくここに行くための方法であり、ここにすべての肯定的なことは、スパゲッティコールバック関数を単独で使用しないためにわずか数ミリ秒で損失を上回る

使用方法:do_shortcode()はテンプレートにハードコードされています

あなたがdo_shortcode()を通してショートコードを呼び出す必要があるならば、これは私が線を引くところです、そしてあなたはそれを間違ってやっています。私が言ったように、ショートコードは少し遅いので、ここでは単純な関数を書いてそれをプラグイン( 移植性のために推奨される )またはfunctions.phpに落として、それからあなたの関数に呼び出すほうがいいでしょう。テンプレート。

どちらの方法でも、あなたのショートコード、あるいはあなたが作成した関数あるいはクラスを呼び出すためにテンプレートを変更しなければならないでしょう。これが、私見ですが、ショートコードではなく、単純な関数または少し速いクラスを使用するべきである理由です。

結論

ショートコードの使用をやめるか制限するべきですか。答えは簡単です、それはすべて上記のように用途に依存します。最後に、ページ内で複数のショートコードを呼び出す場合は、必要な機能を1つのしっかりした賢いショートコードにまとめて、必要なことをすべて実行できるようにしてください。

ペンを置く前に、 Query Monitor プラグインをダウンロードしてインストールします。私は個人的にはすべての開発者が彼/彼女のローカルテスト環境にこのプラグインをインストールしておくべきだと感じています。このプラグインは、いくつのクエリが作成されているか、それらのクエリを作成するのにかかる時間、そして特定のページをロードするのにかかった時間を教えてくれます。

3
Pieter Goosen

いくつかの側面があります、そして、いつものように、パフォーマンスは文脈で取られなければならないものです。 Pieterの答えはあなたに1つを与えます - 「あなたは必要な機能を達成するための(より良い)方法さえありますか」。それを超えて、覚えておく価値があるいくつかの事実があります

  • Modern PHPは速いです。非効率的なコードを書くことは決して良いことではありませんが、PHPの内部動作を最適化しようとするのに時間を無駄にしすぎることはおそらくないでしょう。
  • ショートコードを検出して解析するために正規表現を使用することで時間がかかる部分は、テキスト自体を解析することではなく、テキストの解析に使用される内部の「解析マシン」を生成することです。 PHPはマシンをキャッシュすることでここに役立ちます。
  • 肥大化は肥大化であり、肥大化は通常何らかの形でパフォーマンスに影響を与えます。一般的には、使用しないショートコードを「オフ」にして、関連する「構文解析マシン」を小さくして高速にすることができます。あなたが実際にそのようにしているならば、注意することは、膨大な除去コードが実行するのに単なる無用なショートコードの存在の影響より多くの時間がかからないことを確認することです。
2
Mark Kaplun

あなたがショートコードと呼ばれていない場合、これはそれらがそれらの機能と呼ばれていないことを意味し、それゆえあなたのウェブサイトのパフォーマンスに影響を与えません。

また、あなたはあなたのサイトへの負荷を減らすために静的なクラスと変数を使うことができます。すべてのショートコードは1回だけuse functionになります。

0
Dmitry Ivanov