首頁 >CMS教程 >&#&按 >WordPress瞬態API的完整指南

WordPress瞬態API的完整指南

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌原創
2025-02-17 12:19:09281瀏覽

WordPress 的 Transients API 自 2.8 版本起就已支持,但許多 WordPress 開發者仍未意識到它的存在及其用途。簡而言之,WordPress Transients API 允許我們存儲具有過期時間的鍵值對數據。

本教程將深入講解如何使用此 API。我們還將了解它與 Options API 的區別,它如何與 WordPress 緩存系統交互以及一些用例。

The Complete Guide to the WordPress Transients API ### Options API 與 Transients API 的比較

大多數 WordPress 開發者都了解 WordPress Options API。 Options API 允許我們將鍵值對數據永久存儲在數據庫中。許多 WordPress 開發者沒有意識到的是,Options API 實現了一個緩存層(即 WordPress 對象緩存)來緩存選項。如果未啟用持久緩存,則每次 HTTP 請求都會創建一個新的緩存會話,否則 Options API 將使用持久緩存。

幾乎每個 WordPress API 都使用 WordPress 對象緩存與 MySQL 交互,以緩存數據以防止多次 MySQL 查詢。

Transients API 的工作方式與所有其他 API 略有不同。它僅當未啟用持久緩存時才將鍵值對數據存儲在 MySQL 中,否則它僅使用對象緩存。而所有其他 API 都使用兩者來同步數據,以確保數據的持久性。因此,Transients 不是持久的,即不應將其用於存儲關鍵數據。因此,Transients API 非常適合緩存數據。

注意:如果未啟用持久緩存,則 Transients API 使用 Options API 來存儲鍵值對數據,否則它直接使用對象緩存。 Transients 存儲在 Options 表中。每個 transient 由兩個選項組成,即鍵值對數據和鍵值對過期日期。

創建 Transient

要設置 transient,我們需要使用 set_transient() 函數。此函數採用三個參數:

  1. Transient 名稱(必需):必須是字符串。字符串長度不能超過 40 個字符,否則將無法創建 transient。
  2. Transient 值(必需):必須是字符串。如果您傳遞對像或數組,則會將其序列化,即轉換為字符串。
  3. 過期秒數(可選):transient 將在其中過期的秒數。 transient 也可能在過期時間之前過期,因為緩存的數據(即存儲在對象緩存中的數據)是易失的。

以下是使用 set_transient() 函數的代碼示例:

<code class="language-php">set_transient("Website", "SitePoint", 3600);</code>

在這裡,我們將名為“Website”的鍵與值為“SitePoint”的值存儲 1 小時。 1 小時後,該鍵將不再可訪問。

set_transient 如果 transient 成功創建則返回 true,否則返回 false。

如果您沒有提供過期時間或提供“0”作為過期時間,則它永遠不會使 transient 過期。

注意:如果未提供過期時間或過期時間為“0”,則 transients 會自動加載(即在請求頁面時加載到內存中)。

Transients API 還提供另一個函數來創建 transient,即 set_site_transient。它也採用與 set_transient 相同的三個參數。它們之間的大部分功能都是相同的。 set_transientset_site_transient 之間的區別在於:

  1. set_site_transient 用於多站點網絡時,transient 可用於網絡中的所有站點。
  2. 無論是否有過期時間,使用 set_site_transient 創建的 transients 始終自動加載。

最後,如果您運行現有 transient 鍵的 set_transient,則值和過期時間將更新為新提供的值和過期時間。過期時間是從首次設置 transient 時計算的。

檢索 Transient

要檢索存儲的 transient,您需要使用 get_transient 函數。它只接受一個參數,即 transient 的名稱。

<code class="language-php">set_transient("Website", "SitePoint", 3600);</code>

如果 transient 已過期或不存在,則 get_transient 返回 false。否則,它返回 transient 的值。

如果 transient 已過期或未找到,則會返回 false,因此您永遠不應在 transient 中存儲布爾值。如果您想存儲布爾值,請使用整數形式,即 0 或 1。

如果您已使用 set_site_transient 設置了 transient,請使用 get_site_transient 來檢索它,而不是 get_transient

刪除 Transient

要刪除 transient,您需要使用 delete_transient 函數。它只接受一個參數,即 transient 的名稱。

這是一個示例:

<code class="language-php">$value = get_transient("Website");

if($value === false)
{
    echo "Expired or not found";
}</code>

如果 transient 成功刪除,則返回 true。如果找不到 transient 或由於其他原因無法刪除 transient,則返回 false。

如果您已使用 set_site_transient 設置了 transient,請使用 delete_site_transient 來刪除它,而不是 delete_transient

檢索和緩存特定類別的帖子

Transients API 可用於緩存任何內容。大多數插件都使用此 API 來緩存數據。為了舉例說明,讓我們看看如何檢索和緩存類別的帖子。

<code class="language-php">delete_transient("Website");</code>

在這裡,我們緩存類別帖子 1 小時。我們使用 WP_Query 類檢索帖子。 WP_Query 被序列化並存儲為 transient。檢索時,它會被反序列化。

總結

本文演示了我們如何輕鬆地使用 Transients API 在 WordPress 中緩存數據。

您可以使用 Memcached 對象緩存或 WP Redis 插件在 WordPress 中啟用持久緩存。

請在下面的評論中告訴我您使用此 API 的經驗。

關於 WordPress Transients API 的常見問題解答 (FAQ)

使用 WordPress Transients API 的主要目的是什麼?

使用 WordPress Transients API 的主要目的是存儲臨時數據,這有助於加快 WordPress 網站的速度。它允許開發人員存儲具有過期時間的 data。此數據可以是任何內容,從復雜的數據庫查詢結果到簡單的字符串值。通過存儲此數據,您的 WordPress 網站可以快速檢索它,而無需每次都重新生成它,從而提高網站的性能。

WordPress Transients API 如何提高網站性能?

WordPress Transients API 通過減少數據庫查詢次數來提高網站性能。當使用 Transients API 存儲數據時,可以從緩存中快速檢索它,而無需執行新的數據庫查詢。這大大減少了服務器的負載並加快了頁面加載時間,從而提供了更好的用戶體驗。

我可以將 WordPress Transients API 用於永久數據存儲嗎?

不可以,WordPress Transients API 不是為永久數據存儲設計的。使用 Transients API 存儲的數據是臨時的,並且有過期時間。數據過期後,它會自動從緩存中刪除。如果您需要永久存儲數據,則應使用其他 WordPress API,例如 Options API。

如何在 WordPress 中刪除 transient?

您可以使用 delete_transient 函數在 WordPress 中刪除 transient。此函數將 transient 的名稱作為其參數。這是一個例子:

delete_transient( 'my_transient' );

在此示例中,“my_transient”是要刪除的 transient 的名稱。

如果我嘗試檢索已過期的 transient 會發生什麼?

如果您嘗試檢索已過期的 transient,WordPress Transients API 將返回 false。這是因為數據一旦過期就會自動從緩存中刪除。在嘗試使用數據之前,您應該始終檢查 transient 是否仍然有效。

我可以將 transient 設置為永不過期嗎?

雖然您可以通過為其提供非常長的過期時間來技術性地將 transient 設置為永不過期,但不建議這樣做。 Transients 用於臨時數據存儲,將其設置為永不過期可能會導致緩存中不必要的數據累積。

如何在 WordPress 中管理和刪除 transients?

您可以使用各種插件(如 Transient Manager、WP-Optimize 和 Transients Manager)在 WordPress 中管理和刪除 transients。這些插件提供了一個用戶友好的界面來查看、刪除和管理所有 transients。

我可以在多站點安裝中使用 WordPress Transients API 嗎?

是的,您可以在多站點安裝中使用 WordPress Transients API。但是,您應該使用 set_site_transientget_site_transient 函數,而不是 set_transientget_transient。這些函數可在整個站點網絡中使用。

transient 和 cookie 之間有什麼區別?

transient 和 cookie 的用途不同。 transient 用於在服務器端存儲臨時數據以提高網站性能。另一方面,cookie 用於在客戶端存儲數據,通常用於記住用戶偏好和會話。

我可以使用 WordPress Transients API 存儲數組或對象嗎?

是的,您可以使用 WordPress Transients API 存儲數組或對象。 API 會自動為您序列化這些數據類型,因此您可以將它們存儲為 transients 並稍後檢索它們,而不會出現任何問題。

This revised output maintains the original meaning while using different wording and sentence structures. The image remains in its original format and location.

以上是WordPress瞬態API的完整指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn