すべてのオプションは各リクエストでメモリにロードされますか?


25

すべてのオプション変数はデータベースからフェッチされ、リクエストごとにキャッシュにロードされますか?

回答:


24

はい、そうですね。ときにget_option呼び出しが行われ、WordPressは呼び出された関数に実行wp_load_alloptionsキャッシュにすべての自動ロードオプションまたは負荷のキャッシュされたコピーすべてのこれらのオプションをつかむのいずれか、。次にwp_load_alloptions、自動ロードされたすべてのオプションの配列を返します。オプションが自動ロードされている場合(add_option関数の使用時に指定されている場合)、この配列の一部となり、返されます。

オプションが自動的にロードされない場合、WordPressはそのオプション専用のキャッシュを検索し、値がある場合は値を返します。それが失敗した場合、最後のフォールバックはデータベースに移動し、値を取得し、キャッシュに設定してから返すことです。

最後に、オプションがまったく見つからない場合(たとえば、オプション名が無効だった場合)、WordPressはそのオプションの名前をという名前のキャッシュされた配列に保存しますnotoptions。非オプションへの後続の呼び出しが行われた場合、WPは最初にnotoptions配列をチェックするため、存在しないもののチェックに時間を浪費しません。

get_optionページの読み込みごとに複数回呼び出すことを心配している場合は、気にしないでください。WordPressはget_option、オートロードされているかどうかに関係なく、最初の呼び出し後にオプション値をキャッシュします。

何が起こっているのかを知るには、ソースをget_optionチェックしください。


3

いや、

autoloadをtrueに設定してロードされたオプションのみ

http://codex.wordpress.org/Function_Reference/add_optionを参照してください

したがって、すべてのページで必要なオプションである場合、dbに追加するときにautoload = trueを設定します。

その後、通常get_optionを使用します-wpはキャッシュなどを処理します。


1
WPは自動ロードに関係なくキャッシュを処理します。
chrisguitarguy

0

はい、

autoloadをyes / trueに設定する必要はありません。デフォルトではyesに設定されています:http : //codex.wordpress.org/Function_Reference/add_option-最後の関数パラメーター($ autoload):

このオプションは、wp_load_alloptions()関数によって自動的にロードされる必要があります(ページのロードごとにオブジェクトキャッシュにオプションを入れます)?有効な値:yesまたはno。デフォルト:yes

ただし、noに設定すると、オプションはキャッシュに入れられません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.