Rumah > Artikel > Tutorial CMS > Panduan Pembangunan Aplikasi Web WordPress: Penjelasan terperinci tentang ciri yang tersedia (Bahagian 7): Teknologi caching
Salah satu perkara paling penting yang mesti sentiasa kita perhatikan semasa membina aplikasi web ialah prestasi.
Seperti yang mereka katakan, prestasi adalah ciri.
Sama ada anda seorang pereka bentuk, pembangun atau pengguna, anda tahu perkara ini secara intuitif: apabila ia berkaitan dengan apl, kami tidak suka menunggu. Kita berasa kecewa apabila perkara tidak berfungsi dengan pantas, atau kita perlu menunggu lebih lama daripada yang kita fikirkan.
Untuk tujuan ini, kebanyakan rangka kerja pembangunan web moden boleh melaksanakan beberapa jenis caching melalui penggunaan API tertentu, dan WordPress (walaupun asasnya) tidak terkecuali.
Jadi, semasa kami meneruskan perbincangan kami tentang mengapa WordPress merupakan pilihan yang berdaya maju sebagai asas untuk pembangunan aplikasi web, kami akan melihat API yang disediakan oleh aplikasi teras, cara ia berfungsi dan cara kami boleh menggunakannya untuk kelebihan kami, serta sebagai cara menggunakan tambahan Pemalam caching meningkatkan lagi prestasi.
Secara ringkasnya, caching adalah penting kerana ia membolehkan kita menyimpan data yang kerap diambil di suatu tempat dalam ingatan supaya ia dapat diambil semula dengan cepat.
Apabila anda melihat gambaran yang lebih besar, ini menjadi lebih jelas apabila berbilang pengguna melihat tapak web. Apa yang saya maksudkan ialah, jika seorang (atau sangat sedikit orang) melawat tapak web, dan tapak web itu menyimpan datanya dalam pangkalan data, maka setiap kali halaman itu dimuatkan, maklumat itu perlu diambil dari tapak web. pangkalan data, dimasukkan ke dalam halaman, dan dikembalikan kepada pengguna.
Jika tahap cache tertentu ditetapkan, pangkalan data tidak perlu dipanggil dengan kerap. Sebaliknya, maklumat boleh ditarik dari kawasan dalam ingatan, membolehkan untuk mendapatkan semula lebih cepat dan oleh itu masa muat halaman lebih cepat.
Kami akan membincangkan butiran teknikal ini kemudian dalam artikel ini.
Jika anda telah lama menggunakan WordPress, anda mungkin sudah biasa dengan banyak pemalam caching yang tersedia.
Ini sudah pasti penyelesaian yang bagus untuk mempercepatkan tapak web dan/atau aplikasi web anda, tetapi ia menimbulkan persoalan: jika anda boleh menggunakan pemalam untuk melakukan ini, maka mengapa kita perlu risau tentangnya?
Sudah tentu, ini adalah soalan yang sah, tetapi pemalam hanya boleh melakukan banyak perkara sendiri.
Pembangun boleh membina aplikasi mereka dengan cara yang bukan sahaja berfungsi dengan baik tanpa mekanisme caching, tetapi juga dipertingkatkan dengan pemalam caching tersebut.
Maksud saya, pemalam caching ini mencari data yang ingin disimpan oleh tema dan aplikasi di suatu tempat, dan jika kita boleh melakukan ini secara pengaturcaraan dalam konteks kerja kita sendiri, maka pemalam ini akan memberi kesan yang lebih besar pada prestasi .
Selepas memahami API yang tersedia, kami akan menyemak semula topik ini kemudian dalam artikel ini dan melihat cara ia boleh meningkatkan prestasi pemalam caching.
Untuk memperkenalkan caching peringkat pertama dalam aplikasi kami, kami perlu memanfaatkan API Transients WordPress. Pertama, sila ambil perhatian bahawa takrifan rasmi bagi sementara ialah "sesuatu yang wujud hanya untuk jangka masa yang singkat
Seperti yang ditakrifkan dalam Codex Alimentarius:
[API Transient] menyediakan cara mudah dan piawai untuk menyimpan data cache buat sementara waktu dalam pangkalan data dengan memberikan nama tersuai dan julat masa selepas itu data akan tamat tempoh dan dipadamkan.
Tetapi apakah sebenarnya maksud ini? Lagipun, data masih disimpan dalam pangkalan data, jadi mengapa ini lebih baik daripada menyimpan data dalam mana-mana jadual pangkalan data lain (seperti jadual wp_options
?)? wp_options
表?)中更好呢?
一旦我们重新审视有关缓存和插件的讨论,我们将更详细地讨论这个问题。
设置瞬态值实际上非常简单,就像在选项表中存储数据一样。
具体来说,您需要一个唯一标识数据的键值,然后需要一个与该键关联的值。您还需要一个过期时间(以秒为单位)来在刷新表之前将数据保留在表中。
假设我们希望将当前用户的名称存储为网站上最后一个或最近活跃的用户。我们可以利用 wp_get_current_user()
函数来做到这一点。
首先,我们将设置如下值:
set_transient( 'most_recent_user', wp_get_current_user()->user_login, 12 * HOUR_IN_SECONDS )
在这里,请注意以下几点:
HOUR_IN_SECONDS
Sediakan transients Menetapkan nilai sementara sebenarnya semudah menyimpan data dalam jadual pilihan.
Secara khusus, anda memerlukan nilai kunci yang mengenal pasti data secara unik, dan kemudian nilai yang dikaitkan dengan kunci itu. Anda juga memerlukan masa tamat tempoh (dalam saat) untuk menyimpan data dalam jadual sebelum memuat semula jadual.
🎜Andaikan kita ingin menyimpan nama pengguna semasa sebagai pengguna aktif terakhir atau paling terkini di tapak web. Kita boleh melakukan ini menggunakan fungsiwp_get_current_user()
. 🎜
🎜Pertama, kami akan menetapkan nilai berikut: 🎜
🎜HOUR_IN_SECONDS
telah diperkenalkan dalam WordPress 3.5. Senarai lengkap pemalar tersedia di sini. 🎜
🎜
🎜Walaupun begini cara kami 🎜menyediakan transien🎜, ini masih tidak menjelaskan cara kami menguruskan transien jika ia tidak wujud atau sudah wujud. 🎜
🎜Kami akan membincangkan perkara ini secara terperinci kemudian dalam artikel ini. 🎜Apabila ia datang untuk mendapatkan sementara, ia sangat serupa dengan mendapatkan semula sesuatu seperti metadata atau pilihan. Maksud saya, kita hanya perlu tahu kunci untuk mendapatkan semula maklumat tersebut.
Jadi, untuk konsisten dengan contoh di atas, kami boleh mendapatkan pengguna terbaharu aplikasi dengan panggilan berikut:
get_transient('most_recent_user');
get_transient('most_recent_user');
这显然会返回您存储的任何类型的信息,或者如果瞬态已过期(即已经过去超过 12 小时),则该函数将返回 FALSE
的布尔值.
这是要记住的关键,特别是当您尝试读取缓存值,然后需要从另一个数据源获取它们(如果它们在临时存储中不可用)时。
我们将在本文结束之前看一下执行此操作的完整示例。
最后,如果您需要删除瞬态以将其完全删除,或者在其定义的到期之前将其删除以便将其替换为另一个值,那么您只需使用以下函数:
delete_transient('most_recent_user');
此外,如果临时值删除不成功,该函数将返回 FALSE
;否则,它将返回 FALSE
。
在设置缓存值的过期时间时,有多种方法可以使设置值比音乐基本整数操作更容易。
例如,MINUTE_IN_SECONDS
比 60 更容易使用,尤其是在乘以分钟、小时或天时。
从 WordPress 3.5 开始,核心应用程序中添加了几个常量,使这些计算更易于阅读。
即:
MINUTE_IN_SECONDS
HOUR_IN_SECONDS
DAY_IN_SECONDS
WEEK_IN_SECONDS
YEAR_IN_SECONDS
更容易使用、阅读和编写,不是吗?
此时,我认为重要的是要了解如何从在选项表中存储值开始设置瞬态。
以下是我们执行此操作的顺序:
wp_options
表中保存一个选项。然后,在代码的后半部分,我们将执行以下操作:
话虽如此,让我们看一下:
$username = wp_get_current_user()->user_name; add_option( 'most_recent_user', $username ); // Check to see if the value exists in the cache if ( FALSE !== get_transient( 'most_recent_user' ) ) { // If it does, we'll delete it... if( delete_transient( 'most_recent_user' ) ) { // ...and store the most recent user for a maximum of one minute set_transient( 'most_recent_user', MINUTE_IN_SECONDS ); } else { // The deletion was unsuccessful, so log the error } } // Now try to read the value from the cache. if ( FALSE !== ( $username = get_transient( 'most_recent_user' ) ) { // Since it doesn't exist, then we'll read it from the option's table $username = get_option( 'most_recent_user' ); // And then we'll update the cache set_transient( 'most_recent_user', $username, MINUTE_IN_SECONDS ); }
请注意,这个示例并不完整 - 它可以重构得更清晰一些,并且代码应该抽象为与应用程序更相关的函数,但此代码的目的是展示如何处理条件逻辑、选项和瞬态。
现在,综上所述,我们可以重新审视如何使用瞬态来提高插件性能的问题。
正如我们之前提到的:
在了解了可用的 API 后,我们将在本文后面重新讨论此主题,以了解它们如何增强缓存插件的性能。
块引用>话虽如此,缓存和 WordPress 数据库与数据库中数据的位置有关。
由于瞬态数据存储在与其他数据不同的位置,因此插件(例如基于 memcached 的插件)将查找存储瞬态数据的数据,然后将数据从该位置加载到内存中。
因此,当请求数据时,将从内存中检索数据。如果数据不存在,则会从数据库中检索。
最重要的是,如果编程正确,当从缓存中读取数据失败并从数据库中检索数据时,会将其插回缓存中,以便下次检索时将其插入到缓存中。内存中可用。
最后,关于瞬态信息需要注意的关键一点是它有一个有效期。这意味着数据只会在数据库的该区域中存储特定的时间。
为此,我们需要考虑到这一点。这意味着每当我们想要检索瞬态时,我们都需要确保它们存在。如果没有,我们会将它们从所在位置拉出,然后将它们存储在正确的位置。
自定义查询
至此,我们已经介绍了 WordPress 提供的许多与 Web 应用程序开发基础相关的功能。
但是我们还有最后一个主要组件要介绍,那就是如何处理自定义查询。
当然,有一些很棒的 API,因为它与运行专为 WordPress 特定目的而设计的查询相关,例如
Ini jelas akan mengembalikan apa-apa jenis maklumat yang telah anda simpan, atau jika sementara telah tamat tempoh (iaitu lebih daripada 12 jam telah berlalu), fungsi itu akan mengembalikan boolean dengan NilaiWP_Query
和WP_User_Query
FALSE
.Ini adalah kunci untuk diingat, terutamanya jika anda cuba membaca nilai cache dan kemudian perlu mendapatkannya daripada sumber data lain (jika ia tidak tersedia dalam storan sementara).
FALSE
jika tidak, ia akan mengembalikan FALSE
; 🎜
🎜Tamat Tempoh Sementara🎜
🎜Mengenai menetapkan masa tamat tempoh untuk nilai cache, terdapat cara untuk menjadikan tetapan nilai lebih mudah daripada operasi integer asas muzik. 🎜
🎜Sebagai contoh, HOUR_IN_SECONDS
DAY_IN_SECONDS
WEEK_IN_SECONDS
YEAR_IN_SECONDS
wp_options
. 🎜Kami akan menyemak semula topik ini kemudian dalam artikel ini selepas melihat API yang tersedia untuk melihat cara ia boleh meningkatkan prestasi pemalam caching. 🎜🎜Setelah berkata demikian, caching dan pangkalan data WordPress mempunyai kaitan dengan lokasi data dalam pangkalan data. 🎜 🎜Memandangkan data sementara disimpan di lokasi yang berbeza daripada data lain, pemalam (seperti yang berdasarkan memcached) akan mencari data di mana data sementara disimpan dan memuatkan data ke dalam memori dari lokasi tersebut. 🎜 🎜Jadi apabila data diminta, data akan diambil dari memori. Jika data tidak wujud, ia diambil dari pangkalan data. 🎜 🎜Paling penting, jika diprogramkan dengan betul, apabila membaca data dari cache gagal dan mendapatkan semula data dari pangkalan data, ia akan dimasukkan semula ke dalam cache supaya ia akan dimasukkan ke dalam cache pada kali berikutnya ia diambil. terdapat dalam ingatan. 🎜 🎜Akhir sekali, perkara utama yang perlu diberi perhatian tentang maklumat sementara ialah ia mempunyai tarikh luput. Ini bermakna bahawa data hanya akan disimpan di kawasan pangkalan data itu untuk tempoh masa tertentu. 🎜 🎜Untuk ini, kita perlu mengambil kira perkara ini. Ini bermakna setiap kali kita ingin mendapatkan semula sementara, kita perlu memastikan ia wujud. Jika tidak, kami menariknya keluar dari lokasi mereka dan menyimpannya di lokasi yang betul. 🎜
WP_Query
dan WP_User_Query
, tetapi kami juga Anda akan belajar tentang beberapa alat asli yang membolehkan kami menulis pertanyaan tersuai ke pangkalan data menggunakan objek WordPress yang ditentukan serta kaedah yang membolehkan pembersihan data yang betul. 🎜
🎜Tetapi kami akan membincangkan semua ini dan banyak lagi dalam artikel seterusnya. 🎜
🎜🎜🎜🎜🎜Atas ialah kandungan terperinci Panduan Pembangunan Aplikasi Web WordPress: Penjelasan terperinci tentang ciri yang tersedia (Bahagian 7): Teknologi caching. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!