Apakah semua opsi dimuat ke memori pada setiap permintaan?

25

Apakah semua variabel opsi diambil dari database dan dimuat ke cache pada setiap permintaan?

rsman
sumber

Jawaban:

24

Ya, semacam. Ketika get_optionpanggilan dilakukan, WordPress menjalankan fungsi yang dipanggil wp_load_alloptions, yang mengambil salinan cache dari semua opsi yang di-load secara otomatis atau memuat semua opsi ke dalam cache. Kemudian wp_load_alloptionsmengembalikan sebuah array dari semua opsi yang diisikan otomatis. Jika opsi Anda dimuat secara otomatis (ditentukan saat Anda menggunakan add_optionfungsi), itu akan menjadi bagian dari array ini dan dikembalikan.

Jika opsi Anda tidak dimuat secara otomatis, WordPress kemudian mencari di dalam cache secara khusus untuk opsi itu dan mengembalikan nilainya jika ada. Jika itu meleset, fallback terakhir adalah pergi ke database, mengambil nilai, mengaturnya cache dan kemudian mengembalikannya.

Akhirnya, jika tidak ada opsi yang ditemukan sama sekali (mis. Nama opsi tidak valid), WordPress menyimpan nama opsi itu dalam array yang di-cache yang disebut notoptions. Jika panggilan berikutnya ke non-opsi dilakukan, WP memeriksa array notoptions terlebih dahulu sehingga tidak membuang waktu memeriksa sesuatu yang tidak ada.

Jika Anda khawatir menelepon get_optionberulang kali per halaman, jangan lakukan. WordPress akan men-cache nilai opsi setelah get_optionpanggilan pertama terlepas dari apakah itu dimuat secara otomatis atau tidak.

Lihat sumbernya untukget_option melihat apa yang terjadi.

chrisguitarguy
sumber
3

Tidak,

hanya opsi yang secara khusus dimuat dengan autoload yang disetel ke true

Lihat http://codex.wordpress.org/Function_Reference/add_option

Jadi jika itu merupakan opsi yang diperlukan pada setiap halaman, ketika Anda menambahkannya ke db, setel autoload = true.

Setelah itu, cukup gunakan get_option secara normal - wp akan menangani cacheing dll.

anmari
sumber
1
WP menangani caching terlepas dari pengisian otomatis.
chrisguitarguy
0

Iya nih,

Tidak perlu mengatur autoload ke yes / true. Ini diatur ke yes secara default: http://codex.wordpress.org/Function_Reference/add_option - parameter fungsi terakhir ($ autoload):

Haruskah opsi ini dimuat secara otomatis oleh fungsi wp_load_alloptions () (menempatkan opsi ke dalam cache objek pada setiap pemuatan halaman)? Nilai yang valid: ya atau tidak. Default: ya

Padahal, jika Anda mengaturnya ke tidak, maka opsi tidak akan dimasukkan ke dalam cache.

Toni Petrov
sumber